Domanda

Io so come recuperare un ambiente ampio variabile di macchina normale in CMAKE utilizzando

$ENV{EnvironmentVariableName}

, ma non riesco a recuperare una variabile di ambiente specifico dell'utente. E 'possibile e come?

È stato utile?

Soluzione

Come variabili nello script CMake

È possibile passare una variabile sulla linea con l'invocazione cmake:

FOO=1 cmake

o esportando una variabile in BASH:

export FOO=1

Poi si può raccoglierlo in uno script CMake utilizzando:

$ENV{FOO}

Altri suggerimenti

Si può anche invocare stesso per fare questo in un modo cross-platform:

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

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

     

Esegui comando in un ambiente modificato.


Proprio essere consapevoli che questo può funzionare solo la prima volta. Se CMake-configura re con uno dei consecutiva costruisce (basta chiamare ad esempio make, uno CMakeLists.txt è stato cambiato e CMake passa attraverso il processo di generazione di nuovo), la variabile d'ambiente definita utente potrebbe non essere più lì (in confronto a livello di sistema le variabili di ambiente ).

Così mi trasferisco quelle definite dall'utente variabili d'ambiente nei miei progetti in una variabile cache 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}")

Riferimento

È necessario avere le variabili esportate. Così, per esempio, in Linux:

export EnvironmentVariableName=foo

variabili non esportare vengono vuoto CMAKE.

Le variabili di ambiente (che si modificano utilizzando le proprietà del sistema) vengono propagate solo per sottoshell quando si crea un nuovo subshell.

Se tu avessi un prompt dei comandi (DOS o Cygwin) aperto quando sono state modificate le vars env utente, allora non verranno visualizzati.

È necessario aprire una nuova riga di comando dopo aver modificato le impostazioni utente.

L'equivalente in Unix / Linux è l'aggiunta di una linea per il vostro .bash_rc:. È necessario avviare una nuova shell per ottenere i valori

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top