Path: blob/master/Source/CPack/cmCPackExternalGenerator.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 <memory>5#include <string>67#include "cm_sys_stat.h"89#include "cmCPackGenerator.h"1011namespace Json {12class Value;13}1415/** \class cmCPackExternalGenerator16* \brief A generator for CPack External packaging tools17*/18class cmCPackExternalGenerator : public cmCPackGenerator19{20public:21cmCPackTypeMacro(cmCPackExternalGenerator, cmCPackGenerator);2223char const* GetOutputExtension() override { return ".json"; }2425protected:26int InitializeInternal() override;2728int PackageFiles() override;2930bool SupportsComponentInstallation() const override;3132int InstallProjectViaInstallCommands(33bool setDestDir, std::string const& tempInstallDirectory) override;34int InstallProjectViaInstallScript(35bool setDestDir, std::string const& tempInstallDirectory) override;36int InstallProjectViaInstalledDirectories(37bool setDestDir, std::string const& tempInstallDirectory,38mode_t const* default_dir_mode) override;3940int RunPreinstallTarget(std::string const& installProjectName,41std::string const& installDirectory,42cmGlobalGenerator* globalGenerator,43std::string const& buildConfig) override;44int InstallCMakeProject(bool setDestDir, std::string const& installDirectory,45std::string const& baseTempInstallDirectory,46mode_t const* default_dir_mode,47std::string const& component, bool componentInstall,48std::string const& installSubDirectory,49std::string const& buildConfig,50std::string& absoluteDestFiles) override;5152private:53bool StagingEnabled() const;5455class cmCPackExternalVersionGenerator56{57public:58cmCPackExternalVersionGenerator(cmCPackExternalGenerator* parent);5960virtual ~cmCPackExternalVersionGenerator() = default;6162virtual int WriteToJSON(Json::Value& root);6364protected:65virtual int GetVersionMajor() = 0;66virtual int GetVersionMinor() = 0;6768int WriteVersion(Json::Value& root);6970cmCPackExternalGenerator* Parent;71};7273class cmCPackExternalVersion1Generator74: public cmCPackExternalVersionGenerator75{76public:77using cmCPackExternalVersionGenerator::cmCPackExternalVersionGenerator;7879protected:80int GetVersionMajor() override { return 1; }81int GetVersionMinor() override { return 0; }82};8384std::unique_ptr<cmCPackExternalVersionGenerator> Generator;85};868788