CPack AppImage 生成器¶
版本 4.2 中添加。
CPack AppImage 生成器允许将应用程序打包成 AppImage 格式。它使用 appimagetool 来打包应用程序,并使用 patchelf 将应用程序的 RPATH 设置为基于 AppImage 挂载位置的相对路径。
appimagetool 不会扫描库依赖项,它只打包已安装的内容,并检查提供的 .desktop 文件是否已正确创建。为了获得最佳兼容性,建议选择一个旧的 LTS 发行版并在其中构建,同时在生成的 AppImage 文件中包含大多数依赖项。
下面的代码片段可以添加到您的 CMakeLists.txt 文件中,将 my_application_target 替换为您应用程序的目标。它将尽最大努力扫描并复制您的应用程序链接到的库,并将它们复制到安装位置。
install(CODE [[
file(GET_RUNTIME_DEPENDENCIES
EXECUTABLES $<TARGET_FILE:my_application_target>
RESOLVED_DEPENDENCIES_VAR resolved_deps
)
foreach(dep ${resolved_deps})
# copy the symlink
file(COPY ${dep} DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
# Resolve the real path of the dependency (follows symlinks)
file(REAL_PATH ${dep} resolved_dep_path)
# Copy the resolved file to the destination
file(COPY ${resolved_dep_path} DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
endforeach()
]])
对于基于 Qt 的项目,建议调用 qt_generate_deploy_app_script() 或 qt_generate_deploy_qml_app_script() 并安装由脚本生成的文件,这将安装 Qt 模块的插件。
您还必须将 CPACK_PACKAGE_ICON 设置为与 Desktop 文件中列出的值相同。
CPack AppImage 生成器特有的变量¶
- CPACK_APPIMAGE_TOOL_EXECUTABLE¶
appimagetool可执行文件的名称,可能位于构建目录中、具有完整路径或在PATH中可访问。- 默认值:
appimagetoolCPACK_PACKAGE_FILE_NAME
- CPACK_APPIMAGE_PATCHELF_EXECUTABLE¶
patchelf可执行文件的名称,可能位于构建目录中、具有完整路径或在PATH中可访问。- 默认值:
patchelfCPACK_APPIMAGE_PATCHELF_EXECUTABLE
- CPACK_APPIMAGE_DESKTOP_FILE¶
已安装的 freedesktop.org 桌面文件的名称。
- 强制项:
是
- 默认值:
- CPACK_APPIMAGE_UPDATE_INFORMATION¶
嵌入更新信息字符串;如果安装了 zsyncmake,则生成 zsync 文件。
- CPACK_APPIMAGE_GUESS_UPDATE_INFORMATION¶
基于 GitHub 或 GitLab 环境变量猜测更新信息。
- CPACK_APPIMAGE_COMPRESSOR¶
Squashfs 压缩。
- CPACK_APPIMAGE_MKSQUASHFS_OPTIONS¶
传递给 mksquashfs 的参数。
- CPACK_APPIMAGE_NO_APPSTREAM¶
不检查 AppStream 元数据。
- CPACK_APPIMAGE_EXCLUDE_FILE¶
使用给定的文件作为 mksquashfs 的排除文件,除了 .appimageignore。
- CPACK_APPIMAGE_RUNTIME_FILE¶
要使用的运行时文件,如果未设置,则会生成一个 bash 脚本。
- CPACK_APPIMAGE_SIGN¶
使用 gpg[2] 进行签名。
- 默认值:
- CPACK_APPIMAGE_SIGN_KEY¶
用于 gpg[2] 签名的密钥 ID。