2017-12-11 30 views
0

cmakeとnsisでcpackを使用して、生成された.exeファイルを環境変数に追加するインストーラを生成しようとしています。cpack cmake windows "ABSOLUTE path INSTALL DESTINATION forbidden"

私は、各サブディレクトリがcmakelist.txtを持ってadd_subdirectory(とサブディレクトリを追加

れる主cmakelist.txtを持っています。今の終了時にメインサブディレクトリで

私が追加されました:

SET(CPACK_NSIS_MODIFY_PATH ON) SET(CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION OFF) INCLUDE(CPack)

及びIを添加 cmakelist.txt各 "サブ" に: SET(CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION OFF) INCLUDE(CPack)

私はこのエラーを持っている:

CPack: Create package using NSIS CPack: Install projects CPack: - Install project: MIALSRTK CMake Error at D:... ABSOLUTE path INSTALL DESTINATION forbidden (by caller):

(これが私が試した理由です:SET(CPACK_ERROR_ON_ABSOLUTE_INSTA LL_DESTINATION OFF)、何も変更されていません)。 私は管理者としても実行しようとしました。

私もここで解決策を試してみました:CPack NSIS, generate installer for Windows

をけど(パック)は、作品には思われない場合。それはelse(pack)の部分に入ります(コマンドメッセージを使ってどこに行くのかを確認しました)。

この問題を解決する方法はありますか?

答えて

0

OFFに変数CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATIONを設定すると、NSIS CPack発生装置のチェックを無効にすることはできません。

Some CPack generators, like NSIS, enforce this internally.

NSISジェネレータを使用すると、相対的なインストールパスを使用するより他に方法がありません。


建設if(pack)あなたはpack変数明示的cmakeにに合格した場合にのみ動作します。 CMakeLists.txtがCPackで実行されているかどうかを検出する暗黙的な方法はありません。

+0

OK、メインのcmakelist.txtにSET(パックTrue CACHE BOOL "CPACKを使用")を追加しました。少なくとも、それは良いif文に入ります。宛先はまだ良くありません。 (パック) メッセージ( "私はここにいる") をインストールした場合、それはbinディレクトリ に入らない(TARGETS \t \t mialsrtkRefineHRMaskByIntersection \t \t \t \t DESTINATIONビン) ELSE (パック) メッセージ(「私はすべき はINSTALL( \t \t mialsrtkRefineHRMaskByIntersection \t \t \t \t DESTINATIONの$ {CMAKE_INSTALL_PREFIX}/bin)に ENDIFを対象)「ここではありません(パック) –

+0

「目的地はまだ良くない」とはどういう意味ですか?エラー "絶対パスのインストール先は禁止されました"が残っていますか?または何? – Tsyvarev

+0

、もはや、.exeファイルは必要なディレクトリにありません。 (全てが欲しいです 。私がcmakeとcpackと呼ぶbuildフォルダのbinディレクトリに移動します。 は、「cmake without cpack」モードで仮想スタジオを使用してInstallをビルドすると動作します。私がcpackを使用しているときはそうではありません。私はcmakeを行い、pack = trueの設定と生成を行います。 "宛先のビン"。私はビジュアルスタジオでプロジェクト全体を構築します。 (そして.exeはbin/testにありません)。その後、私はcpackを実行します。 、cpackは、仮想スタジオ –

関連する問題