Path: blob/master/Source/CPack/cmCPackAppImageGenerator.h
4998 views
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying1file LICENSE.rst or https://cmake.org/licensing for details. */2#pragma once34#include <string>5#include <unordered_map>67#include <cm/optional>89#include "cmCPackGenerator.h"1011/** \class cmCPackAppImageGenerator12* \brief A generator for creating AppImages with CPack13*/14class cmCPackAppImageGenerator : public cmCPackGenerator15{16public:17cmCPackTypeMacro(cmCPackAppImageGenerator, cmCPackGenerator);1819char const* GetOutputExtension() override { return ".AppImage"; }2021cmCPackAppImageGenerator();22~cmCPackAppImageGenerator() override;2324protected:25/**26* @brief Initializes the CPack engine with our defaults27*/28int InitializeInternal() override;2930/**31* @brief AppImages are for single applications32*/33bool SupportsComponentInstallation() const override { return false; }3435/**36* Main Packaging step37*/38int PackageFiles() override;3940private:41/**42* @brief Finds the first installed file by it's name43*/44cm::optional<std::string> FindFile(std::string const& filename) const;4546/**47* @brief AppImage format requires a desktop file48*/49cm::optional<std::string> FindDesktopFile() const;5051/**52* @brief Parses a desktop file [Desktop Entry]53*/54std::unordered_map<std::string, std::string> ParseDesktopFile(55std::string const& filePath) const;5657/**58* @brief changes the RPATH so that AppImage can find it's libraries59*/60bool ChangeRPath();6162bool PatchElfSetRPath(std::string const& file,63std::string const& rpath) const;6465std::string AppimagetoolPath;66std::string PatchElfPath;67};686970