Un wrapper de compilare te poate lăsa să adaugi argumente CMake în timp ce ascunde mediul în care este lansat CMake. Un hook de proiect timpuriu îți oferă un singur loc unde să furnizezi valorile proxy ale procesului de configurare.

Salvează un fișier mic pe o cale absolută stabilă, de exemplu /home/alex/cmake/proxy-env.cmake:

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

Transmite acel fișier configurației:

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

CMAKE_PROJECT_INCLUDE_BEFORE include fișierul la începutul fiecărui apel project(). Rulează așadar mai devreme decât CMAKE_PROJECT_INCLUDE, care rulează la sfârșitul acelui apel. Această distincție contează când configurarea limbajului sau un proiect imbricat are nevoie de această rută.

Pentru descărcări publice în timpul configurării permise printr-un intermediar public, alege valorile URL HTTP din lista de proxy HTTP. Hook-ul tot nu poate afecta munca desfășurată înaintea lui, inclusiv o descărcare anterioară primului apel project(). De asemenea, nu scrie o setare persistentă a mediului sistemului de operare.

Procesele pornite ulterior de acest proces CMake pot moșteni valorile, cu condiția ca clienții lor de rețea să le accepte. O compilare ulterioară, lansată separat, are propriul mediu. O descărcare amânată pentru acea etapă de compilare trebuie să primească proxy-ul și acolo.

Ține fișierul hook în afara unui arbore de surse public când conține detalii private de conectare. Argumentul -D stochează calea hook-ului ca variabilă CMake; set(ENV{...}) modifică mediul procesului aflat în execuție în loc să transforme o variabilă din cache într-o setare de proxy.

Articole similare