21

私は CMake-CPack に 1 週​​間近くイライラしてきました。

悪い点は、CMake-CPack のオンライン ドキュメントがこの部分を十分に説明していないことです。

グーグルで調べたところ、次の変数を使用することがわかりました。

CPACK_PACKAGING_PREFIX          # NOT documented
CMAKE_INSTALL_PREFIX            # Documented, but the behavior seems weird
CPACK_INSTALL_PREFIX            # NOT documented
CPACK_PACKAGE_INSTALL_DIRECTORY # Documented, but this variable does NOT work as the online document described
CPACK_PACKAGING_INSTALL_PREFIX  # NOT documented

私がやろうとしているのは、 を使用して Debian パッケージをパッケージ化fakeroot make packageすることsudo dpkg -i MyProgramPackageNameです。つまり、すべてのファイルを の下にインストールする必要があります。/usr/localMyProgramPackageName/usr/local/MyProgramPackageName-V.1.2.3

これらの変数を調整しようとしています (CMake 2.8.3 および CMake 2.8.5)。いろいろ組み合わせてみましたがだめでした。

成功する唯一の方法は次のとおりです。

Set(CPACK_PACKAGING_INSTALL_PREFIX /usr/local/MyProgramPackageName-V.1.2.3)

しかし、この変数は文書化されておらず、動作は保証できません。私の質問と混同している場合は、いつCPACK_PACKAGE_INSTALL_DIRECTORY?を使用するか教えてください。この変数に関するドキュメントの説明は非常に魅力的であり、私が実際に望んでいるものですが、機能させることができませんでした。

教えてください。

ピーター

4

2 に答える 2

15

これをサポートするドキュメントは見つかりませんでしたが、次のことを行う必要があることを示唆しているように見えるバグレポートと電子メールのアーカイブをいくつか見つけました。

set(CPACK_SET_DESTDIR true)
set(CPACK_INSTALL_PREFIX /opt/MySuperAwesomePrefix-v.1.2.3)

CPACK_INSTALL_PREFIX が設定されていない場合、デフォルトで CMAKE_INSTALL_PREFIX になります。からの相対パスはinstall(... DESTINATION dest)、パッケージ ファイル内で CPACK_INSTALL_PREFIX/dest になります。これは、deb ファイルを生成しようとしたときに機能しました。

于 2011-09-09T14:19:23.430 に答える
1

CPACKが使用するパスは、CMakeLists.txtファイルのINSTALLディレクティブから取得されます。これにより、結果パッケージは「makeinstall」が行うことを反映できます。これにより、CPACK構成が最小限に抑えられます。

したがって、CMakeLists.txtファイルの例から:

INSTALL(TARGETS ${APPLICATION} DESTINATION bin)

これにより、/ usr/binまたは/usr/ local/binにインストールされます。サブディレクトリに配置したい場合は、ここで行うことができます。

INSTALL(TARGETS ${APPLICATION} DESTINATION bin/myappdir)

または完全に異なるディレクトリ:

INSTALL(TARGETS ${APPLICATION} DESTINATION /opt/foo/bar)
于 2011-08-29T15:13:32.703 に答える