CPack AppImage generator¶
Added in version 4.2.
CPack AppImage generator allows to bundle an application into
AppImage format. It uses appimagetool to pack the application,
and patchelf to set the application RPATH to a relative path
based on where the AppImage will be mounted.
The appimagetool does not scan for libraries dependencies it only
packs the installed content and check if the provided .desktop file
was properly created. For best compatibility it's recommended to choose
some old LTS distro and built it there, as well as including most
dependencies on the generated file.
The snipped below can be added to your CMakeLists.txt file
replacing my_application_target with your application target,
it will do a best effort to scan and copy the libraries your
application links to and copy to install location.
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()
]])
For Qt based projects it's recommended to call
qt_generate_deploy_app_script() or qt_generate_deploy_qml_app_script()
and install the files generated by the script, this will install
Qt module's plugins.
You must also set CPACK_PACKAGE_ICON with the same value
listed in the Desktop file.
Variables specific to CPack AppImage generator¶
- CPACK_APPIMAGE_TOOL_EXECUTABLE¶
Name of the
appimagetoolexecutable, might be located in the build dir, full path or reachable inPATH.- Default:
appimagetoolCPACK_PACKAGE_FILE_NAME
- CPACK_APPIMAGE_PATCHELF_EXECUTABLE¶
Name of the
patchelfexecutable, might be located in the build dir, full path or reachable inPATH.- Default:
patchelfCPACK_APPIMAGE_PATCHELF_EXECUTABLE
- CPACK_APPIMAGE_DESKTOP_FILE¶
Name of freedesktop.org desktop file installed.
- Mandatory:
Yes
- Default:
- CPACK_APPIMAGE_UPDATE_INFORMATION¶
Embed update information STRING; if zsyncmake is installed, generate zsync file.
- Default:
- CPACK_APPIMAGE_GUESS_UPDATE_INFORMATION¶
Guess update information based on GitHub or GitLab environment variables.
- CPACK_APPIMAGE_COMPRESSOR¶
Squashfs compression.
- Default:
- CPACK_APPIMAGE_MKSQUASHFS_OPTIONS¶
Arguments to pass through to mksquashfs.
- Default:
- CPACK_APPIMAGE_NO_APPSTREAM¶
Do not check AppStream metadata.
- Default:
- CPACK_APPIMAGE_EXCLUDE_FILE¶
Uses given file as exclude file for mksquashfs, in addition to .appimageignore.
- Default:
- CPACK_APPIMAGE_RUNTIME_FILE¶
Runtime file to use, if not set a bash script will be generated.
- Default:
- CPACK_APPIMAGE_SIGN¶
Sign with gpg[2].
- Default:
- CPACK_APPIMAGE_SIGN_KEY¶
Key ID to use for gpg[2] signatures.
- Default: