Ich weiß, wie man eine normale maschinenweite Umgebungsvariable in CMAKE mit abruft
$ENV{EnvironmentVariableName}
Ich kann jedoch keine benutzerspezifische Umgebungsvariable abrufen. Ist es möglich und wie?
windows
environment-variables
cmake
Lars Bilke
quelle
quelle
Antworten:
Variablen in Ihr CMake-Skript aufnehmen
Sie können eine Variable in der Zeile mit dem cmake-Aufruf übergeben:
oder durch Exportieren einer Variablen in BASH:
Dann können Sie es in einem cmake-Skript abrufen, indem Sie:
quelle
Sie können auch aufrufen cmake selbst, um dies plattformübergreifend zu tun:
Beachten Sie jedoch, dass dies möglicherweise nur beim ersten Mal funktioniert. Wenn CMake mit einem der aufeinanderfolgenden Builds neu konfiguriert wird (Sie rufen einfach z. B.
make
einenCMakeLists.txt
auf, der geändert wurde und CMake den Generierungsprozess erneut durchläuft), ist die benutzerdefinierte Umgebungsvariable möglicherweise nicht mehr vorhanden (im Vergleich zu systemweiten Umgebungsvariablen).Daher übertrage ich diese benutzerdefinierten Umgebungsvariablen in meinen Projekten in eine zwischengespeicherte CMake-Variable:
Referenz
quelle
Sie müssen Ihre Variablen exportieren lassen. So zum Beispiel unter Linux:
Nicht exportierte Variablen sind in CMAKE leer.
quelle
IF($ENV{COVERAGE}) ... END()
, Aufruf :COVERAGE=1 cmake ..
. Zugegeben, ich überprüfe den Inhalt nicht und weiß nicht, ob es so wäre. Aber es funktioniert auf jeden Fall zum Testen, ob es definiert ist oder nicht!Umgebungsvariablen (die Sie mithilfe der Systemeigenschaften ändern) werden nur dann an Subshells weitergegeben, wenn Sie eine neue Subshell erstellen.
Wenn beim Ändern der Benutzerumgebungsvariablen eine Eingabeaufforderung (DOS oder Cygwin) geöffnet war, werden diese nicht angezeigt.
Sie müssen eine neue Eingabeaufforderung öffnen, nachdem Sie die Benutzereinstellungen geändert haben.
Das Äquivalent in Unix / Linux ist das Hinzufügen einer Zeile zu Ihrer .bash_rc: Sie müssen eine neue Shell starten, um die Werte zu erhalten.
quelle
SET var_name=var_value
die Umgebungsvariable auch in der aktuellen DOS-Sitzung oderSETX var_name var_value
dauerhaft festlegen : siehe set und setx . set local könnte auch interessant sein.source ~/.bashrc
, um die geänderte.bashrc
Datei erneut auszuführen und die neuen Werte in Ihre aktuelle Sitzung zu übernehmen.