بلڈ ریپر آپ کو 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 URL قدریں منتخب کریں۔ ہک پھر بھی اپنے سے پہلے ہوئے کام کو متاثر نہیں کر سکتا، بشمول پہلی project() کال سے پہلے کی ڈاؤن لوڈ۔ یہ آپریٹنگ سسٹم کی مستقل ماحول سیٹنگ بھی نہیں لکھتا۔

اس CMake عمل سے بعد میں شروع ہونے والے عمل، اگر ان کے نیٹ ورک کلائنٹ معاونت کریں، قدریں ورثے میں لے سکتے ہیں۔ بعد میں الگ شروع کیا گیا بلڈ اپنا ماحول رکھتا ہے۔ اُس بلڈ مرحلے تک مؤخر کی گئی ڈاؤن لوڈ کو بھی وہاں اپنی پراکسی ملنی چاہیے۔

ہک فائل کو عوامی سورس درخت سے باہر رکھیں جب اس میں نجی کنکشن تفصیلات ہوں۔ -D دلیل ہک راستے کو CMake متغیر کے طور پر محفوظ کرتی ہے؛ set(ENV{...}) چلتی عمل کا ماحول بدلتا ہے، کیش متغیر کو پراکسی سیٹنگ میں نہیں بدلتا۔

متعلقہ مضامین