პროქსი გარემოს დაყენება CMAKE_PROJECT_INCLUDE_BEFORE-ით
გამოიყენეთ პროექტის ადრეული include ფაილი, როცა wrapper საშუალებას იძლევა CMake არგუმენტებისა, მაგრამ არ ამჟღავნებს თავის გაშვების გარემოს.
Build wrapper-მა შეიძლება მოგცეთ CMake არგუმენტების დამატების საშუალება, თან იმალებოდეს გარემო, რომელშიც CMake იშვება. ადრეული პროექტის hook გაძლევთ ერთ ადგილს, სადაც მიაწვდით კონფიგურაციის პროცესის პროქსი მნიშვნელობებს.
შეინახეთ პატარა ფაილი სტაბილურ აბსოლუტურ გზაზე, მაგალითად /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, რომელიც ამ გამოძახების ბოლოს მუშაობს. ეს განსხვავება მნიშვნელოვანია, როცა ენის დაყენებას ან ჩადგმულ პროექტს ეს გზა სჭირდება.
კონფიგურაციის დროს საჯარო შუამავლის მეშვეობით დაშვებული საჯარო ჩამოტვირთვებისთვის აირჩიეთ HTTP URL მნიშვნელობები HTTP პროქსების სიიდან. hook მაინც ვერ იმოქმედებს მანამდე შესრულებულ სამუშაოზე, მათ შორის პირველ project() გამოძახებამდე ჩამოტვირთვაზე. ის ასევე არ წერს ოპერაციული სისტემის მუდმივ გარემოს პარამეტრს.
ამ CMake პროცესის მიერ მოგვიანებით გაშვებულ პროცესებს შეუძლიათ მნიშვნელობების მემკვიდრეობით მიღება, თუ მათი ქსელური კლიენტები მათ მხარს უჭერენ. მოგვიანებით ცალკე გაშვებულ build-ს აქვს საკუთარი გარემო. ამ build ეტაპზე გადადებულმა ჩამოტვირთვამ იქაც უნდა მიიღოს თავისი პროქსი.
hook ფაილი შეინახეთ საჯარო source tree-ს გარეთ, თუ ის შეიცავს კერძო კავშირის დეტალებს. -D არგუმენტი hook-ის გზას ინახავს როგორც CMake ცვლადს; set(ENV{...}) ცვლის გაშვებული პროცესის გარემოს, ნაცვლად იმისა, რომ cache ცვლადი პროქსი პარამეტრად აქციოს.