Configurer l'environnement proxy avec CMAKE_PROJECT_INCLUDE_BEFORE
Utilisez un fichier d'inclusion de projet précoce quand un enrobage autorise des arguments CMake mais n'expose pas son environnement de lancement.
Un enrobage de compilation peut vous laisser ajouter des arguments CMake tout en masquant l'environnement avec lequel CMake est lancé. Un crochet de projet précoce vous donne un seul endroit où fournir les valeurs de proxy du processus de configuration.
Enregistrez un petit fichier à un chemin absolu stable, par exemple /home/alex/cmake/proxy-env.cmake :
set(ENV{http_proxy} "http://proxy.example:8080")
set(ENV{https_proxy} "http://proxy.example:8080")Passez ce fichier à la configuration :
cmake -S . -B build -DCMAKE_PROJECT_INCLUDE_BEFORE=/home/alex/cmake/proxy-env.cmakeCMAKE_PROJECT_INCLUDE_BEFORE inclut le fichier au début de chaque appel à project(). Il s'exécute donc plus tôt que CMAKE_PROJECT_INCLUDE, qui s'exécute à la fin de cet appel. Cette distinction compte lorsque la configuration du langage ou un projet imbriqué a besoin de cette route.
Pour les téléchargements publics au moment de la configuration autorisés via un intermédiaire public, choisissez les valeurs d'URL HTTP dans la liste de proxys HTTP. Le crochet ne peut toujours pas affecter le travail exécuté avant lui, y compris un téléchargement antérieur au premier appel à project(). Il n'écrit pas non plus de paramètre d'environnement persistant du système d'exploitation.
Les processus démarrés ensuite par ce processus CMake peuvent hériter des valeurs, à condition que leurs clients réseau les prennent en charge. Une compilation ultérieure, lancée séparément, a son propre environnement. Un téléchargement reporté à cette étape de compilation doit aussi y recevoir son proxy.
Gardez le fichier de crochet hors d'une arborescence de sources publique lorsqu'il contient des détails de connexion privés. L'argument -D stocke le chemin du crochet comme variable CMake ; set(ENV{...}) modifie l'environnement du processus en cours plutôt que de transformer une variable de cache en réglage de proxy.