1
コンパイルしたプログラムがインストールされるまで、私のプログラムは実行時に必要な設定ファイルの場所にパス環境変数を保存しようとしています。CMakeのインストール時に環境変数を永続的に保存する
私の考えでは、以下を使用していた:
install(CODE "set(ENV{MY_CONFIG_PATH} \"${CMAKE_INSTALL_PREFIX}/MyConfig\"")
はしかし、私はすぐに、これは永久にようにすぐに私はプログラムを実行し、std::getenv()
でMY_CONFIG_PATH
の内容を確認するように、その環境変数を設定していないことが判明しました、私はヌルポインタを取得します。
私はおそらく、コンパイル時にプリプロセッサ定義を設定することを考えましたが、インストールプロセスが実行されているときにだけCMAKE_INSTALL_PREFIX
が入力されているように見えるため、どちらも機能しません。
WindowsとUnixの両方でうまくいく回避策を提案できますか?
'CMAKE_INSTALL_PREFIXはインストールプロセスの実行時にのみ読み込まれるためです。 ' - 変数* CMAKE_INSTALL_PREFIX *は**設定段階*で**知られています。 'configure_file'を使って、その値をソース/ヘッダファイルに埋め込み、あなたのプログラムと一緒にコンパイルすることができます。 – Tsyvarev
素晴らしいです。これについて完全な回答をしたいのであれば、私はそれを受け入れるでしょう。 – CJxD
また、将来の視聴者に役立つ場合は、 'add_definitions(-DFOO -DBAR ...)'が見つかりました。私の場合は、次のように使います: 'add_definitions(-DMY_CONFIG_PATH =" $ {CMAKE_INSTALL_PREFIX}/MyConfig ")' – CJxD