Comment créer un installateur avec CMake + CPack + NSIS sous Windows?

j'aimerais créer un installateur multiplateformes pour un système basé sur C++ que je suis en train de construire.

j'utilise CMake pour tout construire, et ce serait génial si je pouvais utiliser CPack pour faire de l'installateur. J'ai déjà CPack travaillant sur OSX, mais je ne peux pas le faire fonctionner sur Windows. Pour rendre les choses plus faciles, j'ai essayé d'obtenir l'exemple à http://www.cmake.org/Wiki/CMake:Packaging_With_CPack pour travailler avec le logiciel de l'installateur NSIS. Je ne trouve l'installateur NSIS nulle part. après la configuration (avec VS 2010 Win64 generator).

peut-être que je suis confus, mais j'ai pensé qu'il serait possible de créer le paquet d'installation avec seulement la source, CMake, CPack, et NSIS sans avoir besoin de Visual Studio. Est-ce possible?

un lien vers un tutoriel complet (celui de http://www.cmake.org/Wiki/CMake:Component_Install_With_CPack passe à côté de l'information pertinente pour faire fonctionner les Ins et ne mentionne pas les générateurs ou les compilateurs) soyez très utile, ou une explication de base sur la façon dont je peux accéder à ce mythique installateur NSIS généré serait génial.

Voici des listes de Cmakélistes.txt pour l'exemple ci-dessus:

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)
18
demandé sur Fraser 2012-10-30 21:06:38

1 réponses

... J'ai pensé qu'il serait possible de créer le paquet d'installation avec seulement la source, CMake, CPack, et NSIS sans avoir besoin de Visual Studio. Est-ce possible?

Sorte de. Cela dépend de ce que vous entendez par "sans besoin de studio visuel". Vous avez besoin d'un outil de construction pour réellement créer la lib et l'exe. Sur Windows, vous avez besoin de quelque chose comme le msbuild de Visual Studio, surtout si vous spécifiez "Visual Studio 10 Win64" comme générateur.

si vous voulez dire "sans faire tourner Visual Studio", alors la réponse est oui. Vous pouvez demander à CMake d'exécuter l'outil de compilation que vous avez choisi en utilisant --build argument.

après avoir lancé CMake, vous finissez avec un paquet de fichier.vcxproj dans votre répertoire de construction. C'est la construction de ce qui va créer le programme d'installation. Vous pouvez soit construire le projet de paquet depuis Visual Studio, soit invoquer msbuild directement en faisant:

msbuild /P:Configuration=Release PACKAGE.vcxproj

à partir de votre répertoire de compilation dans une commande VS invite.

ceci devrait donner votre installateur nommé MyLib-1.0.0-win64.exe, également dans votre répertoire de construction.



Si vous voulez simplement utiliser CMake, alors une alternative à l'invocation de msbuild est:

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



Ou vous pouvez construire la solution en premier, puis invoquer CPack pour créer l'installateur:

cmake --build . --config Release
cpack -C Release
29
répondu Fraser 2012-10-30 23:13:12