बिल्ड रैपर आपको CMake आर्ग्युमेंट जोड़ने दे सकता है, पर जिस वातावरण में CMake शुरू होता है उसे छिपा सकता है। शुरुआती प्रोजेक्ट हुक आपको कॉन्फ़िगर प्रक्रिया के प्रॉक्सी मान देने के लिए एक जगह देता है।

एक छोटी फ़ाइल स्थिर, निरपेक्ष (absolute) पथ पर सहेजें, उदाहरण के लिए /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 URL मान चुनें। हुक फिर भी उससे पहले हुए काम को प्रभावित नहीं कर सकता, जिसमें पहले project() कॉल से पहले का डाउनलोड भी शामिल है। यह ऑपरेटिंग सिस्टम की स्थायी वातावरण सेटिंग भी नहीं लिखता।

इस CMake प्रक्रिया द्वारा बाद में शुरू की गई प्रक्रियाएँ मान विरासत में ले सकती हैं, बशर्ते उनके नेटवर्क क्लाइंट उनका समर्थन करते हों। बाद में अलग से शुरू किया गया बिल्ड अपना वातावरण रखता है। उस बिल्ड चरण तक टाला गया डाउनलोड भी वहाँ अपना प्रॉक्सी पाना चाहिए।

हुक फ़ाइल को सार्वजनिक स्रोत ट्री से बाहर रखें जब उसमें निजी कनेक्शन विवरण हों। -D आर्ग्युमेंट हुक पथ को CMake चर के रूप में संग्रहीत करता है; set(ENV{...}) चल रही प्रक्रिया का वातावरण बदलता है, कैश चर को प्रॉक्सी सेटिंग में नहीं बदलता।

संबंधित लेख