如何在Windows上使用CMAKE CPACK NSIS创建安装程序

How to create an installer with CMake + CPack + NSIS on Windows?

本文关键字:NSIS CPACK 创建 安装 程序 CMAKE Windows      更新时间:2023-10-16

我想为基于C 的系统创建一个跨平台安装程序。

我使用cmake来构建所有内容,如果我可以使用cpack制作安装程序,那就太好了。我已经有CPACK在OSX上工作,但是我无法在Windows上使用它。为了使事情变得更容易,我尝试在https://gitlab.kitware.com/cmake/community/community/-/wikis/doc/cpack/cpack/component-install-with-with-cpack上使用NSIS安装程序软件。配置后,我在任何地方都找不到NSIS安装程序(使用VS 2010 Win64 Generator)。

也许我很困惑,但是我认为只能使用源,CMAKE,CPACK和NSIS创建安装程序包而无需进行Visual Studio。这可能吗?

链接到完整教程(https://gitlab.kitware.com/cmake/community/community/community/-/wikis/doc/cpack/cpack/component-install-install-with-with-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)

...我认为只能使用源,cmake,cpack和NSIS创建安装程序包而无需Visual Studio。这可能吗?

有点。这取决于您"无需视觉工作室"的含义。您需要一个构建工具来实际创建LIB和EXE。在Windows上,您需要Visual Studio的MSBuild之类的东西,尤其是如果将"Visual Studio 10 Win64"指定为发电机。

如果您的意思是"不运行Visual Studio",那么答案是肯定的。您可以使用--build参数执行您选择的构建工具。

运行cmake后,您最终会在构建目录中获得一个文件poffage.vcxproj。它正在构建将创建安装程序的此功能。您可以从内部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