放荡不羁的bug - cpack
type: channel
link: http://blog.bug-maker.com/tag/cpack/
items: CMake | CPack使用NSIS打包安装程序

CMake | CPack使用NSIS打包安装程序
type: item
date: 2023-06-30T10:21:00+08:00
description: 描述由于配置项比较多，所以单独起一篇文章来说打包的事情。所里的项目发布更新包都是手动压缩出来，其实是和不方便的。正常就应该是按照流水线形式处理，也方便以后在Jenkins等持续集成工具上打包封装。示例代码testLib.zipGit 地址实现代码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 "${C…