Um wrapper de compilação pode permitir que você adicione argumentos do CMake enquanto esconde o ambiente com que o CMake é iniciado. Um gancho de projeto precoce oferece um único lugar para fornecer os valores de proxy do processo de configuração.

Salve um arquivo pequeno em um caminho absoluto e estável, por exemplo /home/alex/cmake/proxy-env.cmake:

set(ENV{http_proxy} "http://proxy.example:8080")
set(ENV{https_proxy} "http://proxy.example:8080")

Passe esse arquivo para a configuração:

cmake -S . -B build -DCMAKE_PROJECT_INCLUDE_BEFORE=/home/alex/cmake/proxy-env.cmake

O CMAKE_PROJECT_INCLUDE_BEFORE inclui o arquivo no início de cada chamada a project(). Ele roda, portanto, antes do CMAKE_PROJECT_INCLUDE, que roda no fim dessa chamada. Essa distinção importa quando a configuração de linguagem ou um projeto aninhado precisa da rota.

Para downloads públicos durante a configuração permitidos por um intermediário público, escolha os valores de URL HTTP na lista de proxies HTTP. O gancho ainda não consegue afetar trabalho executado antes dele, incluindo um download anterior à primeira chamada a project(). Ele também não grava uma configuração persistente do ambiente do sistema operacional.

Processos iniciados depois por este processo do CMake podem herdar os valores, desde que seus clientes de rede os suportem. Uma compilação posterior, iniciada separadamente, tem o próprio ambiente. Um download adiado para essa etapa de compilação também precisa receber seu proxy ali.

Mantenha o arquivo de gancho fora de uma árvore de código-fonte pública quando ele contiver detalhes privados de conexão. O argumento -D armazena o caminho do gancho como variável do CMake; set(ENV{...}) altera o ambiente do processo em execução em vez de transformar uma variável de cache em configuração de proxy.

Artigos relacionados