Обёртка сборки может позволять добавлять аргументы 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 URL из списка HTTP-прокси. Хук по-прежнему не может повлиять на работу, выполненную до него, включая загрузку до первого вызова project(). Он также не записывает постоянную настройку окружения операционной системы.

Процессы, запущенные этим процессом CMake позже, могут унаследовать значения, если их сетевые клиенты это поддерживают. Более поздняя сборка, запущенная отдельно, имеет собственное окружение. Загрузка, отложенная до этого этапа сборки, тоже должна получить там свой прокси.

Держите файл хука вне публичного дерева исходного кода, если он содержит приватные сведения о подключении. Аргумент -D сохраняет путь хука как переменную CMake; set(ENV{...}) меняет окружение работающего процесса, а не превращает переменную кеша в настройку прокси.

Похожие статьи