Eu sei como recuperar uma variável de ambiente normal de toda a máquina no CMAKE usando
$ENV{EnvironmentVariableName}
mas não consigo recuperar uma variável de ambiente específica do usuário. É possível e como?
windows
environment-variables
cmake
Lars Bilke
fonte
fonte
Respostas:
Obtendo variáveis em seu script CMake
Você pode passar uma variável na linha com a invocação cmake:
ou exportando uma variável no BASH:
Então você pode pegá-lo em um script cmake usando:
fonte
Você também pode invocar cmake para fazer isso de uma forma multiplataforma:
Esteja ciente de que isso pode funcionar apenas na primeira vez. Se o CMake for reconfigurado com um dos builds consecutivos (você apenas chama
make
, por exemplo , umCMakeLists.txt
foi alterado e o CMake executa o processo de geração novamente), a variável de ambiente definida pelo usuário pode não estar mais lá (em comparação com as variáveis de ambiente do sistema).Então, eu transfiro essas variáveis de ambiente definidas pelo usuário em meus projetos para uma variável em cache CMake:
Referência
fonte
Você precisa ter suas variáveis exportadas. Por exemplo, no Linux:
Variáveis não exportadas estão vazias no CMAKE.
fonte
IF($ENV{COVERAGE}) ... END()
, invocação:COVERAGE=1 cmake ..
. Concedido, não verifico o conteúdo e não sei se faria. Mas certamente funciona para testar se está definido ou não!Variáveis de ambiente (que você modifica usando as Propriedades do sistema) são propagadas apenas para subshells quando você cria um novo subshell.
Se você tinha um prompt de linha de comando (DOS ou cygwin) aberto quando alterou os vars env do usuário, eles não aparecerão.
Você precisa abrir um novo prompt de linha de comando após alterar as configurações do usuário.
O equivalente em Unix / Linux é adicionar uma linha ao seu .bash_rc: você precisa iniciar um novo shell para obter os valores.
fonte
SET var_name=var_value
para definir a variável de ambiente na sessão DOS atual ouSETX var_name var_value
para defini-la permanentemente: consulte set e setx . definir local também pode ser interessante.source ~/.bashrc
para executar novamente o.bashrc
arquivo modificado e obter os novos valores em sua sessão atual.