- 构建工具
- 开发工具
- CLI
【免费下载链接】CMake
Mirror of CMake upstream repository
CPack 的IFW生成器负责为 Qt Installer Framework 为骨架,结合仓库内 Modules/CPackIFW.cmake 与 Source/CPack/IFW 下的源码实现,系统讲解全部配置变量、工具查找机制、组件/仓库定制命令、在线安装器与国际化方案,读完即可在你的 CMake 项目中一键产出专业级 Qt 安装程序。
概述:IFW 生成器做了什么
IFW生成器(自 CMake 3.1 起提供,见 Help/cpack_gen/ifw.rst)是 CPack 众多生成器之一(详见 cpack-generators(7)),其职责是:
- 为 QtIFW 生成
config.xml、组件包(package)元数据等配置与元信息; - 调用 QtIFW 自带的
binarycreator、repogen、archivegen、installerbase、devtool等命令行工具,最终生成安装器可执行文件。
QtIFW 本身为 Qt 支持的平台(Linux、Microsoft Windows、macOS)提供安装器制作工具集,因此使用本生成器前必须预先安装 QtIFW。CPackIFW模块(Modules/CPackIFW.cmake)负责定位 QtIFW 命令行工具的位置,并定义若干命令来控制该生成器的行为(详见后文"查找 QtIFW 的提示"与"CPackIFW 模块命令"两节)。
行为控制变量全解析
以下变量用于改变 CPackIFW生成器的行为,按文档分类逐组说明。
调试
| 变量 | 引入版本 | 含义 |
|---|---|---|
CPACK_IFW_VERBOSE | 3.3 | 设为ON开启额外的调试输出,默认OFF |
从 Modules/CPackIFW.cmake 的实现可以看到,当该变量开启且成功探测到 QtIFW 版本时,会输出Found QtIFW <版本> version之类的状态信息;若无法探测版本,则会发出警告并提示手动设置CPACK_IFW_FRAMEWORK_VERSION_FORCED。
安装器外观与元信息(Package)
| 变量 | 引入版本 | 含义与默认值 |
|---|---|---|
CPACK_IFW_PACKAGE_TITLE | — | 标题栏显示的安装器名称;未指定时默认取CPACK_PACKAGE_DESCRIPTION_SUMMARY |
CPACK_IFW_PACKAGE_PUBLISHER | — | 软件发布者(显示在 Windows 控制面板中);未指定时默认取CPACK_PACKAGE_VENDOR |
CPACK_IFW_PRODUCT_URL | — | 指向你网站上产品信息页的 URL |
CPACK_IFW_PACKAGE_ICON | — | 自定义安装器图标文件名,必须为绝对路径;macOS 应为.icns、Windows 应为.ico,其他平台忽略 |
CPACK_IFW_PACKAGE_WINDOW_ICON | — | 安装器应用窗口图标(PNG 格式),必须为绝对路径 |
CPACK_IFW_PACKAGE_LOGO | — | Logo 图片(PNG 格式),用作QWizard::LogoPixmap,必须为绝对路径 |
CPACK_IFW_PACKAGE_WATERMARK | 3.8 | 水印图片(PNG),用作QWizard::WatermarkPixmap,必须为绝对路径 |
CPACK_IFW_PACKAGE_BANNER | 3.8 | 横幅图片(PNG),用作QWizard::BannerPixmap,必须为绝对路径 |
CPACK_IFW_PACKAGE_BACKGROUND | 3.8 | 背景图片(PNG),用作QWizard::BackgroundPixmap(仅MacStyle使用),必须为绝对路径 |
CPACK_IFW_PACKAGE_WIZARD_STYLE | 3.8 | 向导风格:Modern、Mac、Aero或Classic |
CPACK_IFW_PACKAGE_WIZARD_DEFAULT_WIDTH | 3.8 | 向导默认宽度(像素);设置了 banner 图片将覆盖该值 |
CPACK_IFW_PACKAGE_WIZARD_DEFAULT_HEIGHT | 3.8 | 向导默认高度(像素);设置了 watermark 图片将覆盖该值 |
CPACK_IFW_PACKAGE_WIZARD_SHOW_PAGE_LIST | 3.20 | 设为OFF隐藏向导左侧的安装页列表;默认ON,但仅在 QtIFW 4.0 及以上有效 |
CPACK_IFW_PACKAGE_TITLE_COLOR | 3.8 | 标题与副标题颜色(HTML 颜色码,如#88FF33) |
CPACK_IFW_PACKAGE_STYLE_SHEET | 3.15 | 样式表文件名,必须为绝对路径 |
源码佐证:在 Source/CPack/IFW/cmCPackIFWInstaller.cxx 的ConfigureFromOptions()中,CPACK_IFW_PACKAGE_ICON、WINDOW_ICON、LOGO、WATERMARK、BANNER、BACKGROUND、STYLE_SHEET等选项均会先经cmSystemTools::FileExists()校验文件是否存在,不存在的文件会被跳过并输出 "will be skipped" 警告;WIZARD_STYLE若取值不是Modern/Aero/Mac/Classic会打印未知取值警告;WIZARD_SHOW_PAGE_LIST在 QtIFW 低于 4.0 时会被忽略并给出明确提示。GenerateInstallerFile()(cmCPackIFWInstaller.cxx)随后把这些设置写入安装器构建目录下的config/config.xml,其中图片类资源会被复制到config/目录(Logo 重命名为cm_logo<ext>、图标重命名为cm_appicon/cm_winicon等),样式表亦按文件名复制后写入<StyleSheet>元素。
注意:上述图片类变量要求绝对路径,且版本门槛由 QtIFW 版本决定(如
WizardStyle/StyleSheet/TitleColor需要 QtIFW 3.0+,WizardShowPageList需要 4.0+),源码中以IsVersionLess("1.4")、IsVersionLess("2.0")、IsVersionLess("3.0")、IsVersionLess("4.0")分段控制各属性何时写入 config.xml。
安装目标与卸载行为(Target)
| 变量 | 引入版本 | 含义与默认值 |
|---|---|---|
CPACK_IFW_TARGET_DIRECTORY | — | 默认安装目标目录。若设置了CPACK_PACKAGE_INSTALL_DIRECTORY,默认值为@ApplicationsDir@/${CPACK_PACKAGE_INSTALL_DIRECTORY};两者都未设置时默认@RootDir@/usr/local。其中@...@形式的预定义变量由 QtIFW 脚本引擎展开(见 QtIFW scripting 文档) |
CPACK_IFW_ADMIN_TARGET_DIRECTORY | — | 需要管理员权限时的默认安装目标目录,同样可使用预定义变量 |
CPACK_IFW_PACKAGE_REMOVE_TARGET_DIR | 3.11 | 设为OFF时卸载不删除目标目录;默认ON |
CPACK_IFW_PACKAGE_GROUP | — | 用于配置根包(root package)的分组 |
CPACK_IFW_PACKAGE_NAME | — | 根包名称;未指定配置分组时使用 |
CPACK_IFW_PACKAGE_START_MENU_DIRECTORY | 3.3 | Windows 开始菜单中产品默认程序组名称;未指定时默认取CPACK_IFW_PACKAGE_NAME |
CPACK_IFW_PACKAGE_MAINTENANCE_TOOL_NAME | 3.3 | 生成的维护工具(maintenance tool)文件名,平台相关的可执行扩展名会被自动追加;未指定时 QtIFW 默认名为maintenancetool |
CPACK_IFW_PACKAGE_MAINTENANCE_TOOL_INI_FILE | 3.3 | 生成的维护工具配置文件文件名;未指定时 QtIFW 默认maintenancetool.ini |
CPACK_IFW_PACKAGE_ALLOW_NON_ASCII_CHARACTERS | 3.3 | 设为ON允许安装路径含非 ASCII 字符;仅 QtIFW 2.0 及以上支持,更老的 QtIFW 始终允许 |
CPACK_IFW_PACKAGE_ALLOW_SPACE_IN_PATH | 3.3 | 设为OFF禁止安装路径含空格;对低于 2.0 的 QtIFW 工具默认为ON |
CPACK_IFW_PACKAGE_DISABLE_COMMAND_LINE_INTERFACE | 3.23 | 设为ON禁用命令行接口特性;默认OFF,仅在 QtIFW 4.0 及以上有效 |
CPACK_IFW_PACKAGE_CONTROL_SCRIPT | 3.3 | 自定义安装器控制脚本文件名 |
CPACK_IFW_PACKAGE_RESOURCES | 3.7 | 额外资源(.qrc文件)列表,加入安装器二进制;应使用绝对路径,且任意两个资源文件不能同名。可用cpack_ifw_add_package_resources命令解析相对路径 |
CPACK_IFW_PACKAGE_FILE_EXTENSION | 3.10 | 目标二进制扩展名。Linux 下未指定时自动追加.run;Windows 下生成.exe应用(未提供时自动追加);macOS 下生成.dmg磁盘镜像(未提供时自动追加) |
CPACK_IFW_PACKAGE_PRODUCT_IMAGES | 3.23 | 显示在PerformInstallationPage上的一组图片,必须是绝对路径且为 PNG 格式;需要 QtIFW 4.0.0+ |
CPACK_IFW_PACKAGE_PRODUCT_IMAGE_URLS | 3.31 | 与CPACK_IFW_PACKAGE_PRODUCT_IMAGES关联的 URL 列表;仅在PRODUCT_IMAGES已定义且两者大小一致时使用;需要 QtIFW 4.0.0+ |
CPACK_IFW_PACKAGE_RUN_PROGRAM | 3.23 | 安装完成且用户接受勾选后执行的命令;需给出安装后的完整应用路径,通常以 QtIFW 预定义变量@TargetDir@开头;需要 QtIFW 4.0.0+ |
CPACK_IFW_PACKAGE_RUN_PROGRAM_ARGUMENTS | 3.23 | 传给CPACK_IFW_PACKAGE_RUN_PROGRAM所指定程序的参数列表;需要 QtIFW 4.0.0+ |
CPACK_IFW_PACKAGE_RUN_PROGRAM_DESCRIPTION | 3.23 | 安装后"运行程序"复选框旁显示的文字;若设置了RUN_PROGRAM而未提供描述,QtIFW 使用类似Run <Name> now的默认文案;需要 QtIFW 4.0.0+ |
CPACK_IFW_PACKAGE_SIGNING_IDENTITY | 3.23 | 指定用于给生成的 app bundle 签名的代码签名身份;仅 macOS 可用,其他平台忽略 |
CPACK_IFW_ARCHIVE_FORMAT | 3.23 | 打包新组件数据归档时使用的格式,省略时默认7z。支持:7z、zip、tar.gz、tar.bz2、tar.xz。若 QtIFW 工具未以 libarchive 支持构建,则只支持7z;需要 QtIFW 4.2.0+ |
CPACK_IFW_ARCHIVE_COMPRESSION | 3.23 | 归档压缩级别,允许值:0(不压缩)、1(最快)、3(快)、5(正常)、7(最大)、9(超强)。未设置时 QtIFW 使用默认级别(通常为 5)。注意部分格式并不支持全部取值,例如zip压缩仅支持 1~7;需要 QtIFW 4.2.0+ |
源码佐证:TargetDir的默认值推导逻辑在 cmCPackIFWInstaller.cxx,与文档所述完全一致;AllowNonAsciiCharacters/AllowSpaceInPath在 QtIFW 低于 2.0 时由生成器写死为true(见 cmCPackIFWInstaller.cxx)。ArchiveFormat/ArchiveCompression在生成器初始化时被读取(cmCPackIFWGenerator.cxx)。ProductImages与ProductImageUrls的长度不一致时会触发警告并丢弃 URL 列表(cmCPackIFWInstaller.cxx),并在config.xml中输出<ProductImages><ProductImage><Image>…</Image><Url>…</Url></ProductImage>…</ProductImages>结构(cmCPackIFWInstaller.cxx)。RunProgram相关选项仅在 QtIFW 4.0+ 写入<RunProgram>/<RunProgramArguments>/<RunProgramDescription>元素(cmCPackIFWInstaller.cxx)。
组件(Components)
| 变量 | 引入版本 | 含义 |
|---|---|---|
CPACK_IFW_RESOLVE_DUPLICATE_NAMES | — | 使用分组安装组件时,解析重复名称 |
CPACK_IFW_PACKAGES_DIRECTORIES | — | 额外的已备好包(package)目录,用于解析依赖组件 |
CPACK_IFW_REPOSITORIES_DIRECTORIES | 3.10 | 额外的已备好仓库目录,用于解析并重新打包依赖组件;需要 QtIFW 3.1+ |
源码佐证:ResolveDuplicateNames、PkgsDirsVector、RepoDirsVector在 cmCPackIFWGenerator.cxx 中从对应变量展开并保存,供后续组件依赖解析与打包流程使用。
查找 QtIFW 的提示与工具相关变量
一般来说,CPackIFW生成器会自动查找 QtIFW 工具。以下变量(按优先级从高到低)可用于扩充find_program默认搜索范围:
CPACK_IFW_ROOT(CMake 变量,3.9+)CPACK_IFW_ROOT(环境变量,3.9+)QTIFWDIR(CMake 变量)QTIFWDIR(环境变量)
注意:指定的路径末尾不应包含
bin(例如:D:\DevTools\QtIFW2.0.5)。
源码佐证:实际查找逻辑在 Modules/CPackIFW.cmake 中。模块依次收集CPACK_IFW_ROOT、QTIFWDIR、QTDIR(含各自的环境变量形式)作为基础路径,Windows 下额外加入$ENV{HOMEDRIVE}/Qt与C:/Qt,其他平台加入$ENV{HOME}/Qt与/opt/Qt;随后按Tools/QtInstallerFramework/、QtIFW、QtIFW-前缀与内置的 QtIFW 版本号列表(从 1.3 一直到 4.11.0)组合出<路径>/<前缀><版本>/bin形式的PATH_SUFFIXES,再分别以NAMES为binarycreator、repogen、installerbase、devtool、archivegen调用find_program。
以下变量保存CPackIFW模块探测到的 QtIFW 命令行工具位置,均为缓存变量,必要时可自行配置:
| 变量 | 引入版本 | 对应工具 |
|---|---|---|
CPACK_IFW_ARCHIVEGEN_EXECUTABLE | 3.19 | archivegen路径 |
CPACK_IFW_BINARYCREATOR_EXECUTABLE | — | binarycreator路径 |
CPACK_IFW_REPOGEN_EXECUTABLE | — | repogen路径 |
CPACK_IFW_INSTALLERBASE_EXECUTABLE | — | installerbase路径 |
CPACK_IFW_DEVTOOL_EXECUTABLE | — | devtool路径 |
CPACK_IFW_FRAMEWORK_VERSION | 3.3 | 将要使用的 QtIFW 工具版本,由CPackIFW模块设置 |
源码佐证:CPACK_IFW_FRAMEWORK_VERSION的探测分三步:优先执行installerbase --version或--framework-version(带 1 秒超时)解析版本号,其次从可执行文件路径中正则提取版本号,最后可手动用缓存变量CPACK_IFW_FRAMEWORK_VERSION_FORCED强制指定(Modules/CPackIFW.cmake)。若binarycreator找不到,生成器会直接报错退出;若配置了远程仓库但找不到repogen,同样报错(cmCPackIFWGenerator.cxx)。
CPackIFW 模块命令
在 CMakeLists.txt 中执行include(CPackIFW)(Modules/CPackIFW.cmake)后,可得到如下命令,用于精细控制安装器组件、分组、仓库与资源:
cpack_ifw_configure_component
配置单个组件(应在cpack_add_component之后调用):
cpack_ifw_configure_component(<compname> [COMMON] [ESSENTIAL] [VIRTUAL] [FORCED_INSTALLATION] [REQUIRES_ADMIN_RIGHTS] [NAME <name>] [DISPLAY_NAME <display_name>] # 支持国际化 [DESCRIPTION <description>] # 支持国际化 [UPDATE_TEXT <update_text>] [VERSION <version>] [RELEASE_DATE <release_date>] [SCRIPT <script>] [PRIORITY|SORTING_PRIORITY <sorting_priority>] # PRIORITY 已废弃 [DEPENDS|DEPENDENCIES <com_id> ...] [AUTO_DEPEND_ON <comp_id> ...] [LICENSES <display_name> <file_path> ...] [DEFAULT <value>] [USER_INTERFACES <file_path> <file_path> ...] [TRANSLATIONS <file_path> <file_path> ...] [REPLACES <comp_id> ...] [CHECKABLE <value>])参数含义:
COMMON:组件将随所属分组一起被打包并安装。ESSENTIAL(3.6+):在该组件更新之前,包管理器保持禁用。VIRTUAL(3.8+):组件在安装器中隐藏,等价于cpack_add_component的HIDDEN选项。FORCED_INSTALLATION(3.8+):组件必须总是被安装,等价于cpack_add_component的REQUIRED选项。REQUIRES_ADMIN_RIGHTS(3.8+):组件需要提升权限安装。NAME:为该组件创建域名式标识,默认使用原组件名。DISPLAY_NAME(3.8+):改写cpack_add_component配置的原始名称。DESCRIPTION(3.8+):改写cpack_add_component配置的原始描述。UPDATE_TEXT(3.8+):若本次为组件更新,将追加到组件描述中。VERSION:组件版本,默认使用CPACK_PACKAGE_VERSION。RELEASE_DATE(3.8+):留空则自动生成。SCRIPT:组件操作脚本的相对或绝对路径。SORTING_PRIORITY(3.8+):组件在树中的优先级;PRIORITY为其旧名(3.8 起废弃)。DEPENDS/DEPENDENCIES(3.8+):QtIFW 风格的依赖组件或组件分组标识列表;3.21 起依赖名可含连字符(需 QtIFW 3.1+)。AUTO_DEPEND_ON(3.8+):该组件自动依赖的组件/分组标识列表。LICENSES:<显示名>与<文件路径>成对出现的许可证文本,可指定多个。DEFAULT(3.8+):取值为TRUE、FALSE或SCRIPT;FALSE表示在安装器中默认禁用该组件,SCRIPT表示运行时解析(别忘了通过SCRIPT选项提供脚本文件)。USER_INTERFACES(3.7+):要加载的页面(.ui文件)路径列表。TRANSLATIONS(3.8+):要加载的翻译(.qm文件)路径列表。REPLACES(3.10+):要替换的组件或分组标识列表。CHECKABLE(3.10+):取TRUE/FALSE;FALSE隐藏条目的复选框,适用于只需从少数几个子组件中做选择的场景。
源码佐证:命令由宏 cpack_ifw_configure_component 实现,内部用cmake_parse_arguments把参数整理为CPACK_IFW_COMPONENT_<大写组件名>_*系列变量,并对SCRIPT、LICENSES、USER_INTERFACES、TRANSLATIONS执行绝对路径解析与存在性检查(缺失脚本/文件会输出警告),最终追加到 CPack 输出配置文件中。
cpack_ifw_configure_component_group
配置组件分组(应在cpack_add_component_group之后调用),参数与上一条命令基本一致:
cpack_ifw_configure_component_group(<groupname> [VIRTUAL] [FORCED_INSTALLATION] [REQUIRES_ADMIN_RIGHTS] [NAME <name>] [DISPLAY_NAME <display_name>] # 支持国际化 [DESCRIPTION <description>] # 支持国际化 [UPDATE_TEXT <update_text>] [VERSION <version>] [RELEASE_DATE <release_date>] [SCRIPT <script>] [PRIORITY|SORTING_PRIORITY <sorting_priority>] [DEPENDS|DEPENDENCIES <com_id> ...] [AUTO_DEPEND_ON <comp_id> ...] [LICENSES <display_name> <file_path> ...] [DEFAULT <value>] [USER_INTERFACES <file_path> <file_path> ...] [TRANSLATIONS <file_path> <file_path> ...] [REPLACES <comp_id> ...] [CHECKABLE <value>])与组件版本的区别点:VIRTUAL设置后分组在安装器中隐藏(注意对根组件设置无效);FORCED_INSTALLATION使分组必须总是被安装;DEFAULT设为TRUE可预选分组(仅对没有可见子组件的分组生效),或SCRIPT运行时解析;其余参数语义同组件命令。
cpack_ifw_add_repository
向二进制安装器添加 QtIFW 远程仓库,该命令同时会把<reponame>追加到CPACK_IFW_REPOSITORIES_ALL变量:
cpack_ifw_add_repository(<reponame> [DISABLED] URL <url> [USERNAME <username>] [PASSWORD <password>] [DISPLAY_NAME <display_name>])DISABLED:仓库默认禁用。URL:指向可用组件列表的地址。USERNAME:访问受保护仓库的用户名。PASSWORD:访问受保护仓库的密码。DISPLAY_NAME:代替 URL 显示的字符串。
cpack_ifw_update_repository
(3.6+)从远程更新 QtIFW 仓库,同样会追加到CPACK_IFW_REPOSITORIES_ALL:
cpack_ifw_update_repository(<reponame> [[ADD|REMOVE] URL <url>]| [REPLACE OLD_URL <old_url> NEW_URL <new_url>]] [USERNAME <username>] [PASSWORD <password>] [DISPLAY_NAME <display_name>])URL:指向可用组件列表的地址。OLD_URL:将被替换的旧列表地址。NEW_URL:替换后的新列表地址。
cpack_ifw_add_package_resources
(3.7+)向安装器二进制添加额外资源,同时会把这些文件追加到CPACK_IFW_PACKAGE_RESOURCES:
cpack_ifw_add_package_resources(<file_path> <file_path> ...)源码佐证:上述命令分别在 Modules/CPackIFW.cmake(add_repository)、Modules/CPackIFW.cmake(update_repository,仅当确实发生 ADD/REMOVE/REPLACE 时才记录仓库)与 Modules/CPackIFW.cmake(add_package_resources,会做文件存在性校验)中实现。
其他设置
在线安装器(Online installer)
默认情况下该生成器产出的是离线安装器:所有打包文件完整包含在安装器可执行文件中。与之相对,在线安装器会从远程服务器下载部分或全部组件。
cpack_add_component命令的DOWNLOADED选项可指定某个组件需要被下载;- 或使用
cpack_configure_downloads命令的ALL选项,指定所有组件都要被下载; cpack_ifw_add_repository命令与CPACK_IFW_DOWNLOAD_ALL变量提供更精细的配置。
CPACK_IFW_DOWNLOAD_ALL说明:若为ON,所有组件都会被下载;若未设置,则行为取决于cpack_configure_downloads是否以ALL选项被调用。源码侧,cmCPackIFWGenerator.cxx 依次读取CPACK_IFW_DOWNLOAD_ALL→CPACK_DOWNLOAD_ALL决定OnlineOnly标志。仓库变量CPACK_IFW_REPOSITORIES_ALL的默认值由 CPack 计算得出,包含所有通过cpack_ifw_add_repository添加或cpack_ifw_update_repository更新的仓库。
存在在线组件时,CPack 会将其写入归档文件;如何让这些文件通过下载 URL 可访问,详见 CPackComponent 模块帮助页中cpack_configure_downloads函数一节。
国际化(Internationalization)
(3.9+)部分变量与命令参数支持通过 CMake 脚本实现国际化,这是可选特性。QtIFW 工具创建的安装器内建多语言支持,许多短语已本地化为多种语言,但这不适用于你自定义的组件与分组描述。因此,本地化组件/分组的描述对安装器用户十分有用。
一个可国际化的变量或参数可包含一个默认值,其后跟随一组"语言区域名 + 本地化值"的成对参数:
set(LOCALIZABLE_VARIABLE "Default value" en "English value" en_US "American value" en_GB "Great Britain value" )一个可直接复用的最小配置示例
参照仓库自带的集成测试 Tests/CPackIFWGenerator/CMakeLists.txt,一个最小可用的 IFW 打包配置大致如下:
cmake_minimum_required(VERSION 3.16) project(CPackIFWGenerator) add_executable(hello main.cpp) install(TARGETS hello ARCHIVE DESTINATION . RUNTIME DESTINATION . LIBRARY DESTINATION . BUNDLE DESTINATION .) # 产品信息页 URL set(CPACK_IFW_PRODUCT_URL "https://example.org/") # Windows 用 .ico,其他平台(macOS)用 .icns if(WIN32) set(CPACK_IFW_PACKAGE_ICON "${PROJECT_SOURCE_DIR}/install.ico") else() set(CPACK_IFW_PACKAGE_ICON "${PROJECT_SOURCE_DIR}/BundleIcon.icns") endif() set(CPACK_IFW_PACKAGE_WINDOW_ICON "${PROJECT_SOURCE_DIR}/install.ico") # 安装页展示图及其关联 URL(需要 QtIFW 4.0+) set(CPACK_IFW_PACKAGE_PRODUCT_IMAGES "${PROJECT_SOURCE_DIR}/ApplicationIcon.png" "${PROJECT_SOURCE_DIR}/SplashScreen.png" ) set(CPACK_IFW_PACKAGE_PRODUCT_IMAGE_URLS "https://www.ApplicationIcon.org" "https://www.SplashScreen.org" ) set(CPACK_GENERATOR "IFW") include(CPack) include(CPackIFW)按上述配置执行cpack,生成器会先通过 Modules/CPackIFW.cmake 定位 QtIFW 工具链,随后在构建目录中生成config/config.xml与组件包元数据,最后调用binarycreator产出安装器可执行文件(Linux 为.run、Windows 为.exe、macOS 为.dmg)。若要组合组件与分组,再结合cpack_add_component/cpack_add_component_group与cpack_ifw_configure_component/cpack_ifw_configure_component_group即可。
延伸阅读
- CPack 生成器总览:cpack-generators(7)
- 组件与下载配置基础:CPackComponent
- CPackIFW 模块与全部命令:Modules/CPackIFW.cmake
- IFW 生成器核心实现:Source/CPack/IFW/cmCPackIFWGenerator.cxx、Source/CPack/IFW/cmCPackIFWInstaller.cxx
- 官方集成测试样例:Tests/CPackIFWGenerator/CMakeLists.txt
- QtIFW 官方资料:索引页、组件脚本、预定义变量、更新推送;QtIFW 各平台安装包可从 Qt 官网下载。
- 构建工具
- 开发工具
- CLI
【免费下载链接】CMake
Mirror of CMake upstream repository
相关推荐
GNU Radio 跨平台构建与安装包生成全指南:依赖管理、CMake/CPack 与 Windows/macOS 打包实战
GNU Radio 跨平台构建与安装包生成全指南:依赖管理、CMake/CPack 与 Windows/macOS 打包实战 本文围绕 GNU Radio 仓库
通信科研CMake-Cookbook项目实战:使用CPack生成多平台软件包
CMake Cookbook项目实战:使用CPack生成多平台软件包 前言 在现代软件开发中,高效的软件打包和分发流程是项目成功的关键因素之一。CMake作为主
文档教程CPack Archive 生成器完全指南:用 CMake 打遍 7z/tar/zip 全格式安装包与源码包
CPack Archive 生成器完全指南:用 CMake 打遍 7z/tar/zip 全格式安装包与源码包 CPack 的 Archive 生成器(Archi
构建工具开发工具CLI
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考