Build каптоочусу 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.cmake

CMAKE_PROJECT_INCLUDE_BEFORE файлды ар бир project() чакыруусунун башында камтыйт. Ошондуктан ал ошол чакыруунун аягында иштеген CMAKE_PROJECT_INCLUDE'дон эрте иштейт. Бул айырма тил жөндөөсү же ичиндеги долбоор бул жолду талап кылганда маанилүү.

Конфигурация учурунда коомдук ортомчу аркылуу уруксат берилген коомдук жүктөөлөр үчүн HTTP URL маанилерин HTTP прокси тизмесинен тандаңыз. Hook өзүнөн мурун аткарылган ишке таасир эте албайт, анын ичинде биринчи project() чакыруусуна чейинки жүктөө да бар. Ал ошондой эле операциялык системанын туруктуу чөйрө жөндөөсүн жазбайт.

Бул CMake процесси кийин иштеткен процесстер маанилерди мурастай алат, эгер алардын тармактык кардарлары аны колдосо. Кийин өзүнчө иштетилген build өз чөйрөсүнө ээ. Ошол build баскычына кийинкиге калтырылган жүктөө да ал жерде өз проксисин алышы керек.

Hook файлында жеке туташуу маалыматтары болсо, аны коомдук source tree'ден тышкары кармаңыз. -D аргументи hook жолун CMake өзгөрмөсү катары сактайт; set(ENV{...}) cache өзгөрмөсүн прокси жөндөөсүнө айландырбастан, иштеп жаткан процесстин чөйрөсүн өзгөртөт.

Тектеш макалалар