2

仕事でいくつかのものをcmakeに移植しようとしています.Windowsインストーラー(現在Inno Setupを使用しています)で行っていることは、cmake/cpackに結果がないようです。インストール時に環境変数に基づいてインストールされる開発ライブラリがあります。そのため、インクルード ファイルは のようなものに"%DEV_INCLUDE_DIR%/include"なり、ライブラリ ファイル自体は のようなものになり"%DEV_LIB_DIR%/lib"、環境変数はインストーラの実行時にボックスの環境に含まれます。したがって、インストーラーが生成されたボックスに何があったかは関係ありません。DEV_INCLUDE_DIRDEV_LIB_DIR

ただし、cmake は、コンパイル時にすべてを構成する必要があるようです。ターゲットを使用して cpackinstallのターゲットを生成し、コマンドを使用して、インストーラーでインストールするものを追加します。環境変数をパスに入れようとすると、うまくいきません。私が試したらpackageinstall

install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/Include/" DESTINATION "%DEV_INCLUDE_DIR%/include")

その後、パッケージが NSIS インストーラーでインストールされるときに%DEV_INCLUDE_DIR%フォルダーが作成されますが、これは間違いなく私が望んでいるものではありません。インストール時にその環境変数の値CMAKE_INSTALL_PREFIXに置き換えたい。%DEV_INCLUDE_DIR%そして、私はそれを行う方法を見つけることができません。誰かがそれを行う方法を知っていますか、それが可能かどうかさえ知っていますか?

正直なところ、この場合のインストール プレフィックスはわかりません (環境変数に基づいてすべてがインストールされます) が、cmake はインストール プレフィックスが存在するという考えに基づいて構築されているようで、インストール プレフィックスがコマンドDESTINATION内のすべてが絶対ディレクトリである場合は無視されます(または最悪の場合、空のディレクトリが作成されます)installが、環境変数を環境変数または絶対ディレクトリとして扱っていません。そして、それを環境変数として扱うようにcmakeに指示すると考えることができるすべての方法(例$ENV{DEV_INCLUDE_DIR}")は、インストールされているボックスではなく、ビルドされているボックスで環境変数を使用することを含みます。インストール時に実際に環境変数を使用するように cmake/cpack のインストール/パッケージを取得する方法はありますか?

4

0 に答える 0