描述
由于配置项比较多,所以单独起一篇文章来说打包的事情。所里的项目发布更新包都是手动压缩出来,其实是和不方便的。正常就应该是按照流水线形式处理,也方便以后在Jenkins等持续集成工具上打包封装。
示例代码
实现代码
set(_install_path "bin")
install(TARGETS ${PROJECT_NAME}
RUNTIME
DESTINATION ${_install_path} # 指定安装目录
)
install(
FILES # 复制文件
$<TARGET_FILE:testLib> # testLib库静态文件
DESTINATION ${_install_path} # 指定文件复制目录
)
install(
DIRECTORY # 复制目录
${testLib_DIR}/../static/ # 执行所需文件(注意:带最后一个是复制此目录下的文件,不带/则是复制static这个目录到目标目录)
DESTINATION ${_install_path} # 指定复制目录
)
############################## 打包(会用到install) ##############################
include (InstallRequiredSystemLibraries)
set(CPACK_GENERATOR "NSIS") # 指定NSIS打包成EXE(或者ZIP、TG等)
set(CPACK_SYSTEM_NAME "win64") # 系统名
set(CPACK_PACKAGE_EXECUTABLES ${PROJECT_NAME} "测试软件") # 可执行文件的名称和快捷方式标签
set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/static\\\\icon.ico") # 安装包左上角图标(严格要求的bmp,后来处理了一下图片convert cion.bmp BMP3:cion2.bmp)
set(CPACK_PACKAGE_NAME "测试软件") # 设置安装包的包名,打好的包将会是<packagename>-<version>-<sys>.deb,如果不设置,默认是工程名
set(CPACK_PACKAGE_VERSION "1.0.0") # 设置版本号
SET(CPACK_PACKAGE_DESCRIPTION "这是一个测试软件 项目包") # 设置description
SET(CPACK_PACKAGE_CONTACT "root@bug-maker.com") # 设置联系方式
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "amd64") # 设置架构
set(CPACK_DEBIAN_PACKAGE_NAME "测试软件") # 设置程序名,就是程序安装后的名字
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "猪在天上飞") # 设置维护人
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/static/License.txt") # 设置安装界面的License
# set(CPACK_NSIS_CREATE_ICONS_EXTRA "CreateShortCut '$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\测试软件2.lnk' '$INSTDIR\\\\${_install_path}\\\\${PROJECT_NAME}.exe'") # 在开始菜单中创建快捷链接
set(CPACK_NSIS_MENU_LINKS "${_install_path}\\\\${PROJECT_NAME}.exe" "测试软件2") # 指定开始菜单中的快捷方式
set(CPACK_NSIS_CREATE_ICONS_EXTRA "CreateShortCut '$DESKTOP\\\\测试软件.lnk' '$INSTDIR\\\\${_install_path}\\\\${PROJECT_NAME}.exe'") # 在桌面创建快捷链接
set(CPACK_NSIS_MUI_ICON "${CMAKE_CURRENT_SOURCE_DIR}/static\\\\install.ico") # 指定NSIS安装程序的图标文件(格式要求ico)
set(CPACK_NSIS_UNINSTALL_NAME "Uninstall") # 卸载名称
set(CPACK_NSIS_MUI_UNIICON "${CMAKE_CURRENT_SOURCE_DIR}/static\\\\uninstall.ico") # 指定NSIS卸载程序的图标文件(格式要求ico)
set(CPACK_NSIS_MUI_HEADERIMAGE "${CMAKE_CURRENT_SOURCE_DIR}/static\\\\icon2.bmp") # 安装包左上角图标(严格要求的bmp,后来处理了一下图片convert cion.bmp BMP3:cion2.bmp)
set(CPACK_NSIS_PACKAGE_NAME "软件包名称") # 指定生成的NSIS安装程序的名称。
set(CPACK_NSIS_PACKAGE_VERSION ${PROJECT_VERSION}) # 指定生成的NSIS安装程序的版本号。
set(CPACK_NSIS_PACKAGE_VENDOR "供应商名称") # 指定生成的NSIS安装程序的供应商名称。
set(CPACK_NSIS_PACKAGE_DESCRIPTION "简单的描述") # 指定生成的NSIS安装程序的描述。
set(CPACK_NSIS_BRANDING_TEXT "左下角描述") # 左下角描述
set(CPACK_NSISDISPLAY_NAME "显示名称") # 指定生成的NSIS安装程序的显示名称。
set(CPACK_NSIS_HELP_LINK "https://www.test.com/help") # 指定生成的NSIS安装程序的帮助链接。
set(CPACK_NSIS_PACKAGE_URL "https://www.test.com") # 指定生成的NSIS安装程序的URL链接。
include(CPack)
说明
CPack NSIS Generator的配置描述
- CPACK_NSIS_INSTALL_ROOT
指定用户默认安装路径 - CPACK_NSIS_MUI_ICON
指定NSIS安装程序的图标文件(格式要求.ico) - CPACK_NSIS_MUI_UNIICON
指定NSIS卸载程序的图标文件(格式要求.ico) - CPACK_NSIS_INSTALLER_MUI_ICON_CODE
允许你指定一个NSIS脚本代码片段,用于设置安装程序的MUI图标,可以使用NSIS的内置函数和命令来设置图标。 - CPACK_NSIS_MUI_WELCOMEFINISHPAGE_BITMAP(CMake 3.5 添加)
指定一个位图图像文件的路径,用于替换NSIS MUI插件默认的欢迎页和完成页的图像。 - CPACK_NSIS_MUI_UNWELCOMEFINISHPAGE_BITMAP(CMake 3.5 添加)
指定一个位图图像文件的路径,用于替换NSIS MUI插件默认的取消欢迎页和完成页的图像。 - CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS
指定一个或多个自定义命令,这些命令将在NSIS安装程序执行预安装命令之前执行。 - CPACK_NSIS_EXTRA_INSTALL_COMMANDS
指定一个或多个自定义命令,这些命令将在NSIS安装程序执行预安装命令之后执行。 - CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS
指定一个或多个自定义命令,这些命令将在NSIS安装程序执行卸载命令之后执行。 - CPACK_NSIS_COMPRESSOR
指定NSIS安装程序生成时使用的压缩器。默认情况下,CPack使用NSIS的默认压缩器,即zlib压缩器。参数:zlib、lzma、bzip2 - CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL
指定是否在安装之前先执行卸载操作(卸载自己)。默认为OFF,即不启用在安装之前先卸载的功能。 - CPACK_NSIS_MODIFY_PATH
指定是否在安装过程中修改系统的PATH环境变量。默认为ON,即允许修改系统的PATH环境变量。 - CPACK_NSIS_DISPLAY_NAME
指定生成的NSIS安装程序在Windows系统中显示的名称。默认该变量的值为项目的名称。 - CPACK_NSIS_PACKAGE_NAME
指定生成的NSIS安装程序的名称。 - CPACK_NSIS_INSTALLED_ICON_NAME
指定在Windows系统中安装完成后的快捷方式图标的名称。默认情况下,该变量的值为项目的图标文件名。 - CPACK_NSIS_HELP_LINK
指定生成的NSIS安装程序的帮助链接。 - CPACK_NSIS_URL_INFO_ABOUT
指定生成的NSIS安装程序的URL链接。 - CPACK_NSIS_CONTACT
指定生成的NSIS安装程序中的联系信息。 - CPACK_NSIS_<compName>_INSTALL_DIRECTORY(CMake 3.7 添加)
为特定的组件(compName)指定一个自定义的安装目录。默认情况下,该变量的值为空,即使用默认的安装目录。 - CPACK_NSIS_CREATE_ICONS_EXTRA
命令形式创建开始菜单快捷方式 - CPACK_NSIS_DELETE_ICONS_EXTRA
命令形式删除开始菜单快捷方式 - CPACK_NSIS_EXECUTABLES_DIRECTORY
指定在NSIS安装程序中可执行文件的目录,默认为空,即使用默认的可执行文件目录。 - CPACK_NSIS_MUI_FINISHPAGE_RUN
指定在NSIS安装程序的完成页面上显示的一个可执行文件的路径。默认为空,即不会在完成页面上显示任何可执行文件。 - CPACK_NSIS_MENU_LINKS
指定开始菜单中的快捷方式。 - CPACK_NSIS_UNINSTALL_NAME(CMake 3.17 添加)
指定卸载程序名称。 默认值为Uninstall。 - CPACK_NSIS_WELCOME_TITLE(CMake 3.17 添加)
指定欢迎页面头部标题文字 - CPACK_NSIS_WELCOME_TITLE_3LINES(CMake 3.17 添加)
指定NSIS安装程序的欢迎页面标题的三行文本。默认为空,即使用默认的欢迎页面标题。 - CPACK_NSIS_FINISH_TITLE(CMake 3.17 添加)
指定NSIS安装程序的完成页面标题的三行文本 - CPACK_NSIS_FINISH_TITLE_3LINES(CMake 3.17 添加)
指定NSIS安装程序的完成页面标题的三行文本。默认为空,即使用默认的完成页面标题。 - CPACK_NSIS_MUI_HEADERIMAGE(CMake 3.17 添加)
指定NSIS安装程序的左上角图标(严格要求的bmp,后来处理了一下图片convert cion.bmp BMP3:cion2.bmp) - CPACK_NSIS_MANIFEST_DPI_AWARE
指定NSIS安装程序中应用程序的DPI感知属性。默认为空,即不设置DPI感知属性。参数:"default"、"true"、"false" - CPACK_NSIS_BRANDING_TEXT(CMake 3.20 添加)
指定NSIS安装程序中左下角标线描述。 - CPACK_NSIS_BRANDING_TEXT_TRIM_POSITION(CMake 3.20 添加)
指定NSIS安装程序中品牌文本的截断位置。默认为空,即不进行品牌文本的截断。参数:"left"、"right" - CPACK_NSIS_EXECUTABLE(CMake 3.21 添加)
指定NSIS安装程序的可执行文件。默认为空,即使用默认的可执行文件。 - CPACK_NSIS_IGNORE_LICENSE_PAGE(CMake 3.22 添加)
指定NSIS安装程序是否忽略许可协议页面。默认为空,即不忽略许可协议页面。参数:"ON"、"OFF" - CPACK_NSIS_EXECUTABLE_PRE_ARGUMENTS(CMake 3.25 添加)
指定在NSIS安装程序运行可执行文件之前要添加的额外参数。 - CPACK_NSIS_EXECUTABLE_POST_ARGUMENTS
指定在NSIS安装程序运行可执行文件之后要添加的额外参数。
注意事项
生成
E:\test\testMain\build>cpack.exe CPackConfig.cmake
CPack: Create package using NSIS
CPack: Install projects
CPack: - Install project: testMain []
CPack: Create package
CPack: - package: E:/test/testMain/build/测试软件-1.0.0-win64.exe generated.