Wiem, jak pobrać normalną zmienną środowiskową dla całej maszyny w CMAKE przy użyciu
$ENV{EnvironmentVariableName}
ale nie mogę pobrać zmiennej środowiskowej specyficznej dla użytkownika. Czy to możliwe i jak?
windows
environment-variables
cmake
Lars Bilke
źródło
źródło
Odpowiedzi:
Pobieranie zmiennych do skryptu CMake
Możesz przekazać zmienną w linii z wywołaniem cmake:
lub eksportując zmienną w BASH:
Następnie możesz go odebrać w skrypcie cmake za pomocą:
źródło
Możesz także wywołać cmake zrobić to w sposób wieloplatformowy:
Wystarczy mieć świadomość , że to może działać tylko za pierwszym razem. Jeśli CMake ponownie konfiguruje się z jedną z kolejnych kompilacji (po prostu wywołujesz, na przykład
make
, jednaCMakeLists.txt
została zmieniona i CMake ponownie przechodzi przez proces generowania), zmienna środowiskowa zdefiniowana przez użytkownika może już nie istnieć (w porównaniu ze zmiennymi środowiskowymi całego systemu).Więc przenoszę te zmienne środowiskowe zdefiniowane przez użytkownika w moich projektach do zmiennej buforowanej CMake:
Odniesienie
źródło
Musisz wyeksportować zmienne. Na przykład w Linuksie:
Niewyeksportowane zmienne są puste w CMAKE.
źródło
IF($ENV{COVERAGE}) ... END()
, wezwanie:COVERAGE=1 cmake ..
. To prawda, nie sprawdzam zawartości i nie wiem, czy tak. Ale z pewnością działa w testach, jeśli jest zdefiniowany, czy nie!Zmienne środowiskowe (modyfikowane przy użyciu właściwości systemu) są propagowane tylko do podpowłok podczas tworzenia nowej podpowłoki.
Jeśli masz otwarty wiersz poleceń (DOS lub cygwin) po zmianie zmiennych środowiska użytkownika, nie pojawią się.
Po zmianie ustawień użytkownika musisz otworzyć nowy wiersz polecenia.
Odpowiednikiem w systemie Unix / Linux jest dodanie linii do twojego .bash_rc: musisz uruchomić nową powłokę, aby uzyskać wartości.
źródło
SET var_name=var_value
aby ustawić zmienną środowiskową w bieżącej sesji DOS lubSETX var_name var_value
ustawić ją na stałe: zobacz set i setx . set local może być również interesujący.source ~/.bashrc
ponownie zmodyfikowany.bashrc
plik i pobrać nowe wartości do bieżącej sesji.