Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Kitware
GitHub Repository: Kitware/CMake
Path: blob/master/Source/CPack/cmCPackGeneratorFactory.h
4998 views
1
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
2
file LICENSE.rst or https://cmake.org/licensing for details. */
3
#pragma once
4
5
#include "cmConfigure.h" // IWYU pragma: keep
6
7
#include <map>
8
#include <memory>
9
#include <string>
10
11
#include "cmCPackConfigure.h" // IWYU pragma: keep
12
13
class cmCPackGenerator;
14
class cmCPackLog;
15
16
/** \class cmCPackGeneratorFactory
17
* \brief A container for CPack generators
18
*
19
*/
20
class cmCPackGeneratorFactory
21
{
22
public:
23
cmCPackGeneratorFactory();
24
25
//! Get the generator
26
std::unique_ptr<cmCPackGenerator> NewGenerator(std::string const& name);
27
28
using CreateGeneratorCall = cmCPackGenerator*();
29
30
void RegisterGenerator(std::string const& name,
31
char const* generatorDescription,
32
CreateGeneratorCall* createGenerator);
33
34
void SetLogger(cmCPackLog* logger) { this->Logger = logger; }
35
36
using DescriptionsMap = std::map<std::string, std::string>;
37
DescriptionsMap const& GetGeneratorsList() const
38
{
39
return this->GeneratorDescriptions;
40
}
41
42
private:
43
using t_GeneratorCreatorsMap = std::map<std::string, CreateGeneratorCall*>;
44
t_GeneratorCreatorsMap GeneratorCreators;
45
DescriptionsMap GeneratorDescriptions;
46
cmCPackLog* Logger{};
47
};
48
49