cmake/Source/cmQtAutoGenGlobalInitializer.h

83 lines
2.3 KiB
C
Raw Normal View History

2019-11-11 23:01:05 +01:00
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
file Copyright.txt or https://cmake.org/licensing for details. */
2021-09-14 00:13:48 +02:00
#pragma once
2019-11-11 23:01:05 +01:00
#include "cmConfigure.h" // IWYU pragma: keep
#include <map>
2020-02-01 23:06:01 +01:00
#include <memory>
2019-11-11 23:01:05 +01:00
#include <string>
#include <unordered_map>
#include <vector>
2020-02-01 23:06:01 +01:00
#include "cmQtAutoGen.h"
2019-11-11 23:01:05 +01:00
class cmLocalGenerator;
class cmQtAutoGenInitializer;
/// @brief Initializes the QtAutoGen generators
class cmQtAutoGenGlobalInitializer
{
public:
/// @brief Collection of QtAutogen related keywords
class Keywords
{
public:
Keywords();
std::string AUTOMOC;
std::string AUTOUIC;
std::string AUTORCC;
std::string AUTOMOC_EXECUTABLE;
std::string AUTOUIC_EXECUTABLE;
std::string AUTORCC_EXECUTABLE;
std::string SKIP_AUTOGEN;
std::string SKIP_AUTOMOC;
std::string SKIP_AUTOUIC;
std::string SKIP_AUTORCC;
std::string AUTOUIC_OPTIONS;
std::string AUTORCC_OPTIONS;
std::string qrc;
std::string ui;
};
cmQtAutoGenGlobalInitializer(
2020-08-30 11:54:41 +02:00
std::vector<std::unique_ptr<cmLocalGenerator>> const& localGenerators);
2019-11-11 23:01:05 +01:00
~cmQtAutoGenGlobalInitializer();
2021-11-20 13:41:27 +01:00
Keywords const& kw() const { return this->Keywords_; }
2019-11-11 23:01:05 +01:00
2023-07-02 19:51:09 +02:00
bool InitializeCustomTargets();
bool SetupCustomTargets();
2019-11-11 23:01:05 +01:00
private:
friend class cmQtAutoGenInitializer;
void GetOrCreateGlobalTarget(cmLocalGenerator* localGen,
std::string const& name,
std::string const& comment);
void AddToGlobalAutoGen(cmLocalGenerator* localGen,
std::string const& targetName);
void AddToGlobalAutoRcc(cmLocalGenerator* localGen,
std::string const& targetName);
2024-04-14 22:45:38 +02:00
cmQtAutoGen::ConfigStrings<cmQtAutoGen::CompilerFeaturesHandle>
GetCompilerFeatures(std::string const& generator,
cmQtAutoGen::ConfigString const& executable,
std::string& error, bool isMultiConfig,
bool UseBetterGraph);
2019-11-11 23:01:05 +01:00
std::vector<std::unique_ptr<cmQtAutoGenInitializer>> Initializers_;
std::map<cmLocalGenerator*, std::string> GlobalAutoGenTargets_;
std::map<cmLocalGenerator*, std::string> GlobalAutoRccTargets_;
2024-04-14 22:45:38 +02:00
cmQtAutoGen::ConfigStrings<
std::unordered_map<std::string, cmQtAutoGen::CompilerFeaturesHandle>>
2019-11-11 23:01:05 +01:00
CompilerFeatures_;
Keywords const Keywords_;
};