| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- 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
|