| CPack AppImage Generator |
| ------------------------ |
| |
| .. versionadded:: 4.2 |
| |
| The CPack `AppImage`_ generator enables bundling an application into the |
| 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. |
| |
| .. _`AppImage`: https://appimage.org |
| |
| The ``appimagetool`` does not scan for libraries dependencies. It only |
| packs the installed content and checks if the provided ``.desktop`` file |
| was properly created. For best compatibility, it's recommended to build on |
| an old LTS distribution and to include any dependencies in the generated file. |
| |
| The snippet below can be added to your ``CMakeLists.txt`` file. |
| Replace ``my_application_target`` with your application target. |
| The example will do a best effort to identify the libraries your |
| application links to and copy them to the install location. |
| |
| .. code-block:: cmake |
| |
| 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() |
| ]]) |
| |
| The CPack AppImage generator will generate a default `AppRun`_ based on the |
| provided ``.desktop`` entry. Alternatively, if a custom ``AppRun`` is |
| installed, e.g., via the :command:`install` command, it will be used instead |
| of the generated one. |
| |
| .. _`AppRun`: https://docs.appimage.org/introduction/software-overview.html#apprun |
| |
| For Qt-based projects, it is 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 the |
| Qt plugins. |
| |
| You must also set :variable:`CPACK_PACKAGE_ICON` with the same value |
| listed in the Desktop file. |
| |
| Variables Specific to CPack AppImage Generator |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
| |
| .. variable:: CPACK_APPIMAGE_TOOL_EXECUTABLE |
| |
| Name of the ``appimagetool`` executable. If not given as an absolute path, |
| logic based on :command:`find_program` will be used internally with this |
| value to find the executable. |
| |
| :Default: ``appimagetool`` |
| |
| .. variable:: CPACK_APPIMAGE_PATCHELF_EXECUTABLE |
| |
| Name of the ``patchelf`` executable. If not given as an absolute path, |
| logic based on :command:`find_program` will be used internally with this |
| value to find the executable. |
| |
| :Default: ``patchelf`` |
| |
| .. variable:: CPACK_APPIMAGE_DESKTOP_FILE |
| |
| Name of the freedesktop.org desktop file to be installed. If not specified, |
| the first ``.desktop`` file found in the list of files to be installed will |
| be used. There must be a valid ``.desktop`` file for the package, and it |
| must include an ``Icon`` entry that matches :variable:`CPACK_PACKAGE_ICON` |
| without the file extension. The actual installed location of the icon |
| should follow the freedesktop.org specification. |
| |
| :Default: Unset |
| |
| .. variable:: CPACK_APPIMAGE_UPDATE_INFORMATION |
| |
| Embed the value of this variable as the update information. See the |
| ``appimagetool`` source code for the supported values and formats of the |
| ``--updateinformation`` option. It is highly recommended to have |
| the ``zsyncmake`` tool installed if using ``zsync`` update information. |
| |
| :Default: Unset |
| |
| .. variable:: CPACK_APPIMAGE_GUESS_UPDATE_INFORMATION |
| |
| When this variable is true, add the ``--guess`` option to the |
| ``appimagetool`` invocation. This directs the tool to try to guess |
| appropriate update information based on GitHub or GitLab environment |
| variables. |
| |
| :Default: Unset |
| |
| .. variable:: CPACK_APPIMAGE_COMPRESSOR |
| |
| Override the ``appimagetool``'s default type of squashfs compression (zstd). |
| This corresponds to the ``appimagetool --comp`` option. |
| |
| :Default: Unset |
| |
| .. variable:: CPACK_APPIMAGE_MKSQUASHFS_OPTIONS |
| |
| List of arguments to pass through to ``mksquashfs``. Each of these will be |
| preceded by ``--mksquashfs-opt`` on the ``appimagetool`` command line. |
| |
| :Default: Unset |
| |
| .. variable:: CPACK_APPIMAGE_NO_APPSTREAM |
| |
| If set to true, do not check AppStream metadata. This passes the |
| ``--no-appstream`` option to ``appimagetool``. |
| |
| :Default: Unset |
| |
| .. variable:: CPACK_APPIMAGE_EXCLUDE_FILE |
| |
| Use the specified file as an exclude file for ``mksquashfs``, |
| in addition to ``.appimageignore``. This uses the ``--exclude-file`` |
| option to ``appimagetool``. |
| |
| :Default: Unset |
| |
| .. variable:: CPACK_APPIMAGE_RUNTIME_FILE |
| |
| Specify a runtime file to use instead of letting the ``appimagetool`` |
| download a runtime to embed in the generated AppImage. |
| |
| :Default: Unset |
| |
| .. variable:: CPACK_APPIMAGE_SIGN |
| |
| When set to true, sign the generated AppImage with gpg[2]. |
| :variable:`CPACK_APPIMAGE_SIGN_KEY` should also be specified if using this |
| option. |
| |
| :Default: Unset |
| |
| .. variable:: CPACK_APPIMAGE_SIGN_KEY |
| |
| Key ID to use for gpg[2] signatures when signing is enabled with |
| :variable:`CPACK_APPIMAGE_SIGN`. |
| |
| :Default: Unset |