2016-12-17 25 views
1

コンパイルしたプログラムがインストールされるまで、私のプログラムは実行時に必要な設定ファイルの場所にパス環境変数を保存しようとしています。CMakeのインストール時に環境変数を永続的に保存する

私の考えでは、以下を使用していた:

install(CODE "set(ENV{MY_CONFIG_PATH} \"${CMAKE_INSTALL_PREFIX}/MyConfig\"") 

はしかし、私はすぐに、これは永久にようにすぐに私はプログラムを実行し、std::getenv()MY_CONFIG_PATHの内容を確認するように、その環境変数を設定していないことが判明しました、私はヌルポインタを取得します。

私はおそらく、コンパイル時にプリプロセッサ定義を設定することを考えましたが、インストールプロセスが実行されているときにだけCMAKE_INSTALL_PREFIXが入力されているように見えるため、どちらも機能しません。

WindowsとUnixの両方でうまくいく回避策を提案できますか?

+0

'CMAKE_INSTALL_PREFIXはインストールプロセスの実行時にのみ読み込まれるためです。 ' - 変数* CMAKE_INSTALL_PREFIX *は**設定段階*で**知られています。 'configure_file'を使って、その値をソース/ヘッダファイルに埋め込み、あなたのプログラムと一緒にコンパイルすることができます。 – Tsyvarev

+0

素晴らしいです。これについて完全な回答をしたいのであれば、私はそれを受け入れるでしょう。 – CJxD

+0

また、将来の視聴者に役立つ場合は、 'add_definitions(-DFOO -DBAR ...)'が見つかりました。私の場合は、次のように使います: 'add_definitions(-DMY_CONFIG_PATH =" $ {CMAKE_INSTALL_PREFIX}/MyConfig ")' – CJxD

答えて

1

CMAKE_INSTALL_PREFIXが設定時に認識されているので、configure_fileコマンドを使用してファイルを設定し、指定した場所にCMAKE_INSTALL_PREFIXの値を挿入できます。

関連する問題