c++ installer cmake nsis cpack

c++ - ¿Cómo crear un instalador con CMake+CPack+NSIS en Windows?



installer (1)

... Pensé que sería posible crear el paquete de instalación solo con la fuente, CMake, CPack y NSIS sin necesidad de Visual Studio. es posible?

Mas o menos. Depende de lo que quiere decir con "sin necesidad de Visual Studio". Necesitas una herramienta de compilación para crear realmente lib y exe. En Windows, necesita algo como msbuild de Visual Studio, especialmente si especificó "Visual Studio 10 Win64" como generador.

Si te refieres a "sin ejecutar Visual Studio", entonces la respuesta es sí. Puede hacer que CMake ejecute la herramienta de construcción elegida usando el argumento --build .

Después de ejecutar CMake, terminas con un archivo PACKAGE.vcxproj en tu directorio de compilación. Está construyendo esto lo que creará el instalador. Puede construir el proyecto PACKAGE desde dentro de Visual Studio, o puede invocar msbuild directamente haciendo:

msbuild /P:Configuration=Release PACKAGE.vcxproj

desde su directorio de compilación en un símbolo del sistema de VS.

Esto debería producir su instalador llamado MyLib-1.0.0-win64.exe, también en su directorio de compilación.


Si solo desea utilizar CMake, una alternativa a invocar msbuild es:

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


O puede construir la solución primero, luego invocar CPack para crear el instalador:

cmake --build . --config Release cpack -C Release

Me gustaría crear un instalador multiplataforma para un sistema basado en C ++ que estoy construyendo.

Uso CMake para compilar todo, y sería genial si pudiera usar CPack para hacer el instalador. Ya tengo CPack trabajando en OSX, pero no puedo hacer que funcione en Windows. Para facilitar las cosas, traté de obtener el ejemplo en http://www.cmake.org/Wiki/CMake:Packaging_With_CPack para trabajar con el software de instalación de NSIS. No puedo encontrar el instalador de NSIS en ningún lugar después de la configuración (con el generador VS 2010 Win64).

Tal vez estoy confundido, pero pensé que sería posible crear el paquete de instalación solo con la fuente, CMake, CPack y NSIS sin necesidad de Visual Studio. es posible?

Un enlace a un tutorial completo (el de http://www.cmake.org/Wiki/CMake:Component_Install_With_CPack omite la información relevante para que NSIS funcione y no menciona los generadores o compiladores) sería muy útil, o una La explicación básica de cómo puedo llegar a este mítico instalador de NSIS generado sería genial.

Aquí está CMakeLists.txt para el ejemplo anterior:

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)