Rakennuskääre voi sallia CMake-argumenttien lisäämisen samalla kun se piilottaa ympäristön, jossa CMake käynnistetään. Varhainen projektiin kiinnittyvä koukku antaa yhden paikan, jossa määritysprosessin välityspalvelinarvot voi toimittaa.

Tallenna pieni tiedosto vakaaseen absoluuttiseen polkuun, esimerkiksi /home/alex/cmake/proxy-env.cmake:

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

Välitä tiedosto määritykselle:

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

CMAKE_PROJECT_INCLUDE_BEFORE sisällyttää tiedoston jokaisen project()-kutsun alkuun. Se suoritetaan siis aiemmin kuin CMAKE_PROJECT_INCLUDE, joka suoritetaan kyseisen kutsun lopussa. Tämä ero on tärkeä, kun kieliasetukset tai sisäkkäinen projekti tarvitsevat reitin.

Määritysaikaisiin julkisiin latauksiin, jotka on sallittu julkisen välittäjän kautta, valitse HTTP-URL-arvot HTTP-välityspalvelinluettelosta. Koukkku ei silti voi vaikuttaa sitä ennen tehtyyn työhön, mukaan lukien ensimmäistä project()-kutsua edeltävään lataukseen. Se ei myöskään kirjoita pysyvää käyttöjärjestelmän ympäristöasetusta.

Prosessit, jotka tämä CMake-prosessi käynnistää myöhemmin, voivat periä arvot, jos niiden verkkoyhteysasiakkaat tukevat niitä. Myöhemmin erikseen käynnistetty rakennus saa oman ympäristönsä. Kyseiseen rakennusvaiheeseen siirretty lataus tarvitsee välityspalvelimensa myös siellä.

Pidä koukkutiedosto julkisen lähdekoodipuun ulkopuolella, jos se sisältää yksityisiä yhteystietoja. -D-argumentti tallentaa koukun polun CMake-muuttujana; set(ENV{...}) muuttaa käynnissä olevan prosessin ympäristöä sen sijaan, että muuttaisi välimuistimuuttujan välityspalvelinasetukseksi.

Aiheeseen liittyvät artikkelit