עטיפת בנייה עשויה לאפשר לכם להוסיף ארגומנטים של CMake בעוד היא מסתירה את הסביבה שבה מופעל CMake. וו פרויקט מוקדם נותן לכם מקום אחד לספק את ערכי הפרוקסי של תהליך התצורה.

שמרו קובץ קטן בנתיב מוחלט ויציב, לדוגמה /home/alex/cmake/proxy-env.cmake:

set(ENV{http_proxy} "http://proxy.example:8080")
set(ENV{https_proxy} "http://proxy.example:8080")

העבירו את הקובץ הזה לתצורה:

cmake -S . -B build -DCMAKE_PROJECT_INCLUDE_BEFORE=/home/alex/cmake/proxy-env.cmake

CMAKE_PROJECT_INCLUDE_BEFORE כולל את הקובץ בתחילת כל קריאה ל-project(). לכן הוא רץ מוקדם יותר מ-CMAKE_PROJECT_INCLUDE, שרץ בסוף אותה קריאה. ההבחנה הזו חשובה כאשר הגדרת השפה או פרויקט מקונן זקוקים למסלול.

להורדות ציבוריות בזמן התצורה המותרות דרך מתווך ציבורי, בחרו את ערכי כתובת ה-HTTP מתוך רשימת פרוקסי HTTP. הוו עדיין אינו יכול להשפיע על עבודה שהתרחשה לפניו, כולל הורדה לפני הקריאה הראשונה ל-project(). הוא גם אינו כותב הגדרת סביבה מתמשכת של מערכת ההפעלה.

תהליכים שתהליך CMake הזה מפעיל לאחר מכן יכולים לרשת את הערכים, בתנאי שלקוחות הרשת שלהם תומכים בהם. לבנייה מאוחרת יותר שמופעלת בנפרד יש סביבה משלה. הורדה שנדחתה לשלב הבנייה הזה חייבת לקבל את הפרוקסי שלה גם שם.

החזיקו את קובץ הוו מחוץ לעץ מקור ציבורי כשהוא מכיל פרטי חיבור פרטיים. הארגומנט -D שומר את נתיב הוו כמשתנה CMake; set(ENV{...}) משנה את סביבת התהליך הרץ במקום להפוך משתנה מטמון להגדרת פרוקסי.

מאמרים קשורים