قد يسمح لك غلاف البناء بإضافة وسائط 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، الذي يعمل في نهاية ذلك الاستدعاء. هذا التمييز مهم عندما يحتاج إعداد اللغة أو مشروع متداخل إلى المسار.

للتنزيلات العامة وقت التهيئة المسموح بها عبر وسيط عام، اختر قيم عنوان URL لـ HTTP من قائمة وكلاء HTTP. لا يزال الخطاف عاجزًا عن التأثير في العمل الذي جرى قبله، بما في ذلك تنزيل قبل أول استدعاء لـ project(). كما أنه لا يكتب إعدادًا دائمًا لبيئة نظام التشغيل.

يمكن للعمليات التي يبدأها عملية CMake هذه لاحقًا أن ترث القيم، بشرط أن تدعمها عملاء الشبكة لديها. البناء الذي يُطلق لاحقًا بشكل منفصل له بيئته الخاصة. والتنزيل المؤجَّل إلى تلك المرحلة من البناء يجب أن يتلقى الوكيل هناك أيضًا.

أبقِ ملف الخطاف خارج شجرة مصدر عامة عندما يحتوي على تفاصيل اتصال خاصة. تخزّن وسيطة -D مسار الخطاف كمتغيّر CMake؛ ويغيّر set(ENV{...}) بيئة العملية الجارية بدلًا من تحويل متغيّر مخزّن مؤقتًا إلى إعداد وكيل.

مقالات ذات صلة