Подтвердить что ты не робот

Как создать установщик с CMake + CPack + NSIS в Windows?

Я хотел бы создать кросс-платформенный установщик для системы на С++, которую я создаю.

Я использую CMake для создания всего, и было бы здорово, если бы я мог использовать CPack для установки установщика. У меня уже есть CPack, работающий на OSX, но я не могу заставить его работать в Windows. Чтобы упростить задачу, я попытался привести пример в http://www.cmake.org/Wiki/CMake:Packaging_With_CPack для работы с программным обеспечением NSIS. Я не могу найти установщик NSIS где-нибудь после настройки (с генератором VS 2010 Win64).

Возможно, я смущен, но я подумал, что можно будет создать установочный пакет только с исходными, CMake, CPack и NSIS без необходимости в Visual Studio. Возможно ли это?

Ссылка на полный учебник (тот, который находится в 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)
4b9b3361

Ответ 1

... Я думал, что можно создать установочный пакет только с исходными, CMake, CPack и NSIS без необходимости в Visual Studio. Возможно ли это?

Вид. Это зависит от того, что вы подразумеваете под "без необходимости Visual Studio". Вам нужно создать инструмент для создания lib и exe. В Windows вам нужно что-то вроде Visual Studio msbuild, особенно если вы указали "Visual Studio 10 Win64" как генератор.

Если вы имеете в виду "без запуска Visual Studio", тогда ответ "да". Вы можете использовать CMake для выполнения выбранного инструмента сборки с помощью аргумента --build.

После запуска CMake вы получите файл PACKAGE.vcxproj в каталоге сборки. Он создает это, что создаст установщик. Вы можете либо создать проект PACKAGE изнутри Visual Studio, либо вы можете напрямую вызвать 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