2017-06-02 2 views
1

CPack WiXジェネレータを使用してmsi-packageを生成しようとしています。CMAKE_INSTALL_PATHとCPack WiXジェネレータの両方を使用する

私のCMakeLists.txtにはCMAKE_INSTALL_PREFIX"C:/Program Files/My Project"に設定されています。プロジェクトのソースコードの重要な部分がこのパスに依存しているため、完全なパスが必要です。また、プロジェクトをいくつかのコンポーネントに分割しました。そのコンポーネントの1つはcoreです。

私はcmake-guiを使用してVisual Studioソリューションを生成することに成功しました。しかし、私はプロジェクトPACKAGEを構築しようとすると、私は次のエラーを取得する:私は空のCMAKE_INSTALL_PREFIXを離れるとき

53>EXEC : CPack error : Problem creating temporary directory: D:/Projects/build-Project-MSVC2015/_CPack_Packages/win64/WIX/project-2.3.0-20.AMD64/coreC:/Program Files/My Project 

同じエラーが発生します。その場合、この変数は"C:/Program Files/Project_Name"にデフォルトで初期化され、rrorがあるさ:

53>EXEC : CPack error : Problem creating temporary directory: D:/Projects/build-Project-MSVC2015/_CPack_Packages/win64/WIX/project-2.3.0-20.AMD64/coreC:/Program Files/Project_Name 

私はちょうどMy Project(不在先頭追加C:/または/)にCMAKE_INSTALL_PREFIXを設定した場合にのみ、すべてがうまく動作します。ディレクトリはD:/Projects/build-Project-MSVC2015/_CPack_Packages/win64/WIX/project-2.3.0-20.AMD64/coreMy Projectとして作成され、msi-packageが作成されます。

CPackが中間ステップとしてインストールmake DESTDIR="D:/Projects/build-Project-MSVC2015/_CPack_Packages/win64/WIX/project-2.3.0-20.AMD64/core"しようとしていること、見えますが、cmake's documentationで述べたように:

WARNING: DESTDIR may not be used on Windows because installation prefix usually contains a drive letter like in “C:/Program Files” which cannot be prepended with some other prefix.

は私がCPack WiXのジェネレーターでCMAKE_INSTALL_PREFIXの使用状況を誤解していますか?これはVisual Studio固有のものですか?または、DESTDIRを空にするなど、この問題の回避策があります(はい、危険です)。

答えて

0

私は実際にCPackの使い方を誤解していました。 CPackに関する情報を読んだ後、私はmsiパッケージを次のように作成することができました。

Windowsベースのパッケージのインストールでは、CPACK_SET_DESTDIRをFALSEに設定してDESTDIRの使用を無効にしました。 CPACK_SET_DESTDIRにcmakeののマニュアルに記載されているように

The most noticeable difference is that without CPACK_SET_DESTDIR, CPack uses CPACK_PACKAGING_INSTALL_PREFIX as a prefix whereas with CPACK_SET_DESTDIR set, CPack will use CMAKE_INSTALL_PREFIX as a prefix.

私は適切な値にCPACK_PACKAGING_INSTALL_PREFIX変数を設定する必要があり、です。

CPACK_PACKAGING_INSTALL_PREFIXを空でない値に設定すると、e。 g。 /My Project(先導番号/に注意してください)に、CPackはC:/Program files/${CPACK_PACKAGE_INSTALL_DIRECTORY}にこれを追加します。 CPACK_PACKAGE_INSTALL_DIRECTORYは、デフォルトで"${CPACK_PACKAGE_NAME} ${CPACK_PACKAGE_VERSION}"になります。 CPACK_PACKAGE_NAME"my-project"に、CPACK_PACKAGE_VERSION1.0.0に設定すると、完全なインストールパスはC:/Program Files/my-project 1.0.0/My Projectになります。

ので、C:\Program files\My ProjectにプログラムをインストールしますMSIパッケージを構築するために、私はCMakeLists.txtに以下の行を使用します。

SET(CMAKE_INSTALL_PREFIX "C:/Program Files/My Project" CACHE PATH "Install path" FORCE) 
... 
SET(CPACK_SET_DESTDIR FALSE) 
SET(CPACK_PACKAGE_INSTALL_DIRECTORY "My Project") 
SET(CPACK_PACKAGING_INSTALL_PREFIX "") 

WiXの発電機の場合をCPACK_PACKAGE_INSTALL_DIRECTORY完全なパスを含めることはできませんので、SET(CPACK_PACKAGE_INSTALL_DIRECTORY ${CMAKE_INSTALL_PREFIX})しません作業。

CPACK_PACKAGING_INSTALL_PREFIXは、デフォルトでは空であるように見えるので、最後の行は冗長です。

関連する問題