Un wrapper di build può permetterti di aggiungere argomenti di CMake mentre nasconde l'ambiente con cui viene avviato CMake. Un hook di progetto anticipato ti dà un unico punto in cui fornire i valori proxy del processo di configurazione.

Salva un file piccolo in un percorso assoluto stabile, per esempio /home/alex/cmake/proxy-env.cmake:

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

Passa quel file alla configurazione:

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

CMAKE_PROJECT_INCLUDE_BEFORE include il file all'inizio di ogni chiamata a project(). Viene quindi eseguito prima di CMAKE_PROJECT_INCLUDE, che viene eseguito alla fine di quella chiamata. Questa distinzione conta quando la configurazione del linguaggio o un progetto annidato ha bisogno di quel percorso.

Per i download pubblici al momento della configurazione consentiti tramite un intermediario pubblico, scegli i valori URL HTTP dall'elenco dei proxy HTTP. L'hook continua a non poter influire sul lavoro già svolto prima, compreso un download precedente alla prima chiamata a project(). Inoltre non scrive un'impostazione persistente dell'ambiente del sistema operativo.

I processi avviati in seguito da questo processo CMake possono ereditare i valori, a condizione che i loro client di rete li supportino. Una build successiva, avviata separatamente, ha il proprio ambiente. Un download rinviato a quella fase di build deve ricevere il suo proxy anche lì.

Tieni il file hook fuori da un albero di sorgenti pubblico quando contiene dettagli di connessione privati. L'argomento -D memorizza il percorso dell'hook come variabile CMake; set(ENV{...}) modifica l'ambiente del processo in esecuzione invece di trasformare una variabile di cache in un'impostazione proxy.

Articoli correlati