3

VS プロジェクト内でパケット ジェネレーターを実行しようとしていますが、ターゲットとファイルからのインストールで絶対パスを使用しているため、コンパイル中にクラッシュします。

 ABSOLUTE path INSTALL DESTINATION forbidden (by caller): ...

2 回確認しましたが、すべてのインストール ディレクトリは相対的です。${PROJECT_BINARY_DIR} のサブフォルダーとして、次のような非常に多くの変数を設定しました (これは相対的である必要があります)。

set(INSTALL_DIR ${PROJECT_BINARY_DIR}/bin)
set(LIB_DIR ${PROJECT_BINARY_DIR}/bin/lib)
set(EXT_DIR ${PROJECT_BINARY_DIR}/bin/ext)
...

CMAKE/CPACK はこれらの変数を絶対パスとして解釈しますか? もしそうなら、それらの変数で CPack を適切に動作させる方法はありますか? サブ相対パスが関係している場合に CPack を使用するにはどうすればよいですか?

ありがとう

4

2 に答える 2

1

この致命的なエラーは、ユーザーがインストーラーを実行するときにインストール ルートを指定する必要があることを示しています。あなたのcmake設定のどこかに次のようなコードがあると思います:

INSTALL (TARGET myApp DESTINATION ${SOME_INSTALL_PATH}/bin )

SOME_INSTALL_PATHcmake キャッシュの生成時に絶対パスを割り当てると、CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATIONエラーが発生し、"ABSOLUTE path INSTALL DESTINATION forbidden (by caller)"メッセージが表示されます。

この問題を解決するには、インストールに常に相対パスを使用するか、変数DESTINATIONにパッケージ プレフィックスのみを割り当てSOME_INSTALL_PATHます。

参考までに、コマンドへのリンクを以下に示しますINSTALLhttp://www.cmake.org/cmake/help/v3.0/variable/CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION.html

CMake メーリング リストにも同様の質問がありました。 http://public.kitware.com/pipermail/cmake/2013-May/054656.html

于 2014-11-02T08:19:48.560 に答える