27

構築中の C++ ベースのシステム用のクロスプラットフォーム インストーラーを作成したいと考えています。

ビルドはすべてCMakeで行っていますが、インストーラーもCPackで作れたらいいなと思っています。OSX で動作する CPack を既に持っていますが、Windows で動作させることができません。作業を簡単にするために、http: //www.cmake.org/Wiki/CMake:Packaging_With_CPack の例を取得して、NSIS インストーラー ソフトウェアで動作するようにしました。(VS 2010 Win64 ジェネレーターを使用して) 構成した後、NSIS インストーラーがどこにも見つかりません。

戸惑うかもしれませんが、Visual Studio を必要とせずに、ソース、CMake、CPack、NSIS だけでインストール パッケージを作成できると思いました。これは可能ですか?

完全なチュートリアルへのリンク ( http://www.cmake.org/Wiki/CMake:Component_Install_With_CPackにあるものは、NSIS を機能させるための関連情報をスキップし、ジェネレーターやコンパイラーについては言及していません) は非常に役立ちます。この神話的に生成された NSIS インストーラーに到達する方法の基本的な説明は素晴らしいでしょう。

上記の例の CMakeLists.txt は次のとおりです。

cmake_minimum_required(VERSION 2.6.0 FATAL_ERROR)
project(StPMS)

add_library(mylib mylib.cpp)

add_executable(mylibapp mylibapp.cpp)
target_link_libraries(mylibapp mylib)

 install(TARGETS mylib 
   ARCHIVE
   DESTINATION lib
   COMPONENT libraries)
 install(TARGETS mylibapp
   RUNTIME
   DESTINATION bin
   COMPONENT applications)
 install(FILES mylib.h
   DESTINATION include
   COMPONENT headers)

set(CPACK_GENERATOR NSIS)
set(CPACK_PACKAGE_NAME "MyLib")
set(CPACK_PACKAGE_VENDOR "CMake.org")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "MyLib - CPack Component Installation Example")
set(CPACK_PACKAGE_VERSION "1.0.0")
set(CPACK_PACKAGE_VERSION_MAJOR "1")
set(CPACK_PACKAGE_VERSION_MINOR "0")
set(CPACK_PACKAGE_VERSION_PATCH "0")
set(CPACK_PACKAGE_INSTALL_DIRECTORY "CPack Component Example")
SET(CPACK_NSIS_MODIFY_PATH ON)

INCLUDE(CPack)
4

1 に答える 1

42

... Visual Studio を必要とせずに、ソース、CMake、CPack、NSIS だけでインストール パッケージを作成できると考えました。これは可能ですか?

すこし。「Visual Studio を必要としない」という意味によって異なります。実際に lib と exe を作成するには、ビルド ツールが必要です。"Visual Studio 10 Win64"Windows では、特にジェネレーターとして指定した場合、Visual Studio の msbuild のようなものが必要です。

「Visual Studio を実行せずに」という意味であれば、答えはイエスです。--build引数を使用して、選択したビルド ツールを CMake に実行させることができます。

CMake を実行すると、ビルド ディレクトリに PACKAGE.vcxproj ファイルが作成されます。インストーラーを作成するこれをビルドしています。Visual Studio 内から PACKAGE プロジェクトをビルドするか、次のようにして msbuild を直接呼び出すことができます。

msbuild /P:Configuration=Release PACKAGE.vcxproj

VS コマンド プロンプトでビルド ディレクトリから。

これにより、ビルド ディレクトリにも MyLib-1.0.0-win64.exe という名前のインストーラーが作成されます。


CMake だけを使用する場合は、msbuild を呼び出す代わりに次の方法があります。

cmake --build . --target PACKAGE.vcxproj --config Release


または、最初にソリューションをビルドしてから、CPack を呼び出してインストーラーを作成することもできます。

cmake --build . --config Release
cpack -C Release
于 2012-10-30T23:13:12.003 に答える