私はCMAKEで通常のマシン全体の環境変数を取得する方法を知っています
$ENV{EnvironmentVariableName}
しかし、ユーザー固有の環境変数を取得することはできません。それは可能ですか?
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が連続ビルドの1つで再構成された場合(例:make
、one 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では、エクスポートされていない変数は空です。
(システムプロパティを使用して変更する)環境変数は、新しいサブシェルを作成するときにのみサブシェルに伝達されます。
User env varsを変更したときにコマンドラインプロンプト(DOSまたはcygwin)を開いていた場合、それらは表示されません。
ユーザー設定を変更した後、新しいコマンドラインプロンプトを開く必要があります。
Unix/Linuxの同等の機能は、.bash_rcに行を追加することです。値を取得するには、新しいシェルを起動する必要があります。