تنظیم محیط پروکسی با CMAKE_PROJECT_INCLUDE_BEFORE
وقتی پوشش ساخت اجازهٔ آرگومانهای CMake را میدهد اما محیط راهاندازی خود را آشکار نمیکند، از یک فایل درج زودهنگام پروژه استفاده کنید.
پوشش ساخت ممکن است به شما اجازه دهد آرگومانهای 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.cmakeCMAKE_PROJECT_INCLUDE_BEFORE فایل را در آغاز هر فراخوانی project() درج میکند. بنابراین پیش از CMAKE_PROJECT_INCLUDE اجرا میشود، که در پایان همان فراخوانی اجرا میشود. این تفاوت زمانی مهم است که تنظیم زبان یا پروژهای تودرتو به این مسیر نیاز داشته باشد.
برای دانلودهای عمومی در زمان پیکربندی که از طریق یک واسطهٔ عمومی مجاز شدهاند، مقادیر URL HTTP را از فهرست پروکسی HTTP انتخاب کنید. این قلاب همچنان نمیتواند بر کاری که پیش از آن انجام شده تأثیر بگذارد، از جمله دانلودی که پیش از نخستین فراخوانی project() رخ داده است. همچنین تنظیم ماندگاری در محیط سیستمعامل نمینویسد.
فرایندهایی که این فرایند CMake بعداً راهاندازی میکند میتوانند مقادیر را به ارث ببرند، به شرط آنکه کلاینتهای شبکهشان آنها را پشتیبانی کنند. ساخت بعدی که جداگانه راهاندازی شود محیط خودش را دارد. دانلودی که به آن مرحلهٔ ساخت موکول شده نیز باید پروکسی خود را همانجا دریافت کند.
فایل قلاب را وقتی جزئیات اتصال خصوصی دارد بیرون از درخت منبع عمومی نگه دارید. آرگومان -D مسیر قلاب را بهعنوان متغیر CMake ذخیره میکند؛ set(ENV{...}) محیط فرایند در حال اجرا را تغییر میدهد، نه اینکه یک متغیر حافظهٔ نهان را به تنظیم پروکسی تبدیل کند.