Я знаю, как получить обычную переменную среды для всей машины в CMAKE, используя
$ENV{EnvironmentVariableName}
но я не могу получить переменную среды для конкретного пользователя. Возможно ли это и как?
windows
environment-variables
cmake
Ларс Бильке
источник
источник
Ответы:
Получение переменных в вашем скрипте CMake
Вы можете передать переменную в строке с вызовом cmake:
или путем экспорта переменной в BASH:
Затем вы можете забрать его в скрипте cmake, используя:
источник
Вы также можете вызвать cmake сам, чтобы сделать это кроссплатформенным способом:
Просто имейте в виду, что это может сработать только в первый раз. Если CMake переконфигурируется с одной из последовательных сборок (вы просто вызываете, например
make
, однаCMakeLists.txt
была изменена, и CMake снова запускает процесс генерации), пользовательская переменная среды может больше не присутствовать (по сравнению с общесистемными переменными среды).Поэтому я переношу эти определенные пользователем переменные среды в свои проекты в кэшированную переменную CMake:
Ссылка
источник
Вам необходимо экспортировать свои переменные. Так, например, в Linux:
Неэкспортированные переменные пусты в CMAKE.
источник
IF($ENV{COVERAGE}) ... END()
, вызов:COVERAGE=1 cmake ..
. Конечно, я не проверяю содержимое, и не знаю, проверял бы это. Но он, безусловно, работает для тестирования, если он определен или нет!Переменные среды (которые вы изменяете с помощью свойств системы) распространяются на подоболочки только при создании новой подоболочки.
Если у вас была открыта командная строка (DOS или cygwin), когда вы изменили переменные окружения пользователя, то они не появятся.
После изменения пользовательских настроек вам необходимо открыть новую строку командной строки.
Эквивалент в Unix / Linux - это добавление строки в ваш .bash_rc: вам нужно запустить новую оболочку, чтобы получить значения.
источник
SET var_name=var_value
чтобы установить переменную среды в текущем сеансе DOS илиSETX var_name var_value
установить ее постоянно: см. Set и setx . set local тоже может быть интересным.source ~/.bashrc
чтобы повторно запустить измененный.bashrc
файл и получить новые значения в текущем сеансе.