Как получить переменную среды пользователя в CMake (Windows)



Я знаю, как получить нормальную машинную переменную окружения в CMAKE с помощью



$ENV{EnvironmentVariableName}


но я не могу получить пользовательскую переменную среды. Возможно ли это и как?

1082   4  

4 ответов:

получение переменных в ваш скрипт CMake

вы можете передать переменную в строке с вызовом cmake:

FOO=1 cmake

или экспортируя переменную в BASH:

export FOO=1

затем вы можете забрать его в сценарии cmake с помощью:

$ENV{FOO}

вы также можете вызвать cmake сам сделать это кросс-платформенным способом:

cmake -E env EnvironmentVariableName="Hello World" cmake ..

env [--unset=NAME]... [NAME=VALUE]... COMMAND [ARG]...

выполнить команду в измененной среде.


просто помните что это может работать только в первый раз. Если CMake повторно настраивается с одной из последовательных сборок (вы просто вызываете, например,make, одно CMakeLists.txt был изменен, и CMake снова проходит через процесс генерации), определенный пользователем переменная окружения может больше не существовать (по сравнению с системными переменными окружения).

поэтому я передаю эти пользовательские переменные среды в своих проектах в кэшированную переменную CMake:

cmake_minimum_required(VERSION 2.6)

project(PrintEnv NONE)

if (NOT "$ENV{EnvironmentVariableName}" STREQUAL "")
    set(EnvironmentVariableName "$ENV{EnvironmentVariableName}" CACHE INTERNAL "Copied from environment variable")
endif()

message("EnvironmentVariableName = ${EnvironmentVariableName}")

ссылка

вам нужно экспортировать переменные. Так, например, в Linux:

export EnvironmentVariableName=foo

Несообщенные переменные пусты в CMAKE.

переменные среды (которые вы изменяете с помощью системных свойств) распространяются только на дочерние ячейки при создании новой дочерней ячейки.

Если у вас была командная строка (DOS или cygwin) открыта при изменении пользователя env vars, то они не будут отображаться.

после изменения настроек пользователя необходимо открыть новую строку командной строки.

эквивалент в Unix / Linux добавляет строку к вашему .bash_rc: вам нужно запустить новую оболочку, чтобы получить ценности.

Comments

    Ничего не найдено.