mirror of
https://github.com/Kitware/CMake.git
synced 2025-05-09 23:08:18 +08:00

* Per-config values were added to `AUTO*_EXECUTABLE`. * Dependency order was refactored for `cmake_autogen` and `cmake_autorcc` to avoid unnecessary rebuilds. * A new parameter was added for `cmake_autogen` and `cmake_autorcc` to specify the config name of the `auto*_executable` to be used. * Add `AUTOGEN_BETTER_GRAPH_MULTI_CONFIG` target property to change the behavior of the dependency graph. * The timestamp target is split into three targets for per-config to avoid redundant `mocs_compilation` builds when `AUTOGEN_BETTER_GRAPH_MULTI_CONFIG` is ON * Per-config `DEP_FILE_RULE_NAME` values were added to `AutogenInfo.json` for `Multi-Config` usage. * Some functions were refactored to avoid code duplication. This commit reimplements fddd0f0443b4ce81d61f15ee1b2f13105967b25a Fixes: #20074
83 lines
2.3 KiB
C++
83 lines
2.3 KiB
C++
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
file Copyright.txt or https://cmake.org/licensing for details. */
|
|
#pragma once
|
|
|
|
#include "cmConfigure.h" // IWYU pragma: keep
|
|
|
|
#include <map>
|
|
#include <memory>
|
|
#include <string>
|
|
#include <unordered_map>
|
|
#include <vector>
|
|
|
|
#include "cmQtAutoGen.h"
|
|
|
|
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(
|
|
std::vector<std::unique_ptr<cmLocalGenerator>> const& localGenerators);
|
|
~cmQtAutoGenGlobalInitializer();
|
|
|
|
Keywords const& kw() const { return this->Keywords_; }
|
|
|
|
bool InitializeCustomTargets();
|
|
bool SetupCustomTargets();
|
|
|
|
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);
|
|
|
|
cmQtAutoGen::ConfigStrings<cmQtAutoGen::CompilerFeaturesHandle>
|
|
GetCompilerFeatures(std::string const& generator,
|
|
cmQtAutoGen::ConfigString const& executable,
|
|
std::string& error, bool isMultiConfig,
|
|
bool UseBetterGraph);
|
|
|
|
std::vector<std::unique_ptr<cmQtAutoGenInitializer>> Initializers_;
|
|
std::map<cmLocalGenerator*, std::string> GlobalAutoGenTargets_;
|
|
std::map<cmLocalGenerator*, std::string> GlobalAutoRccTargets_;
|
|
cmQtAutoGen::ConfigStrings<
|
|
std::unordered_map<std::string, cmQtAutoGen::CompilerFeaturesHandle>>
|
|
CompilerFeatures_;
|
|
Keywords const Keywords_;
|
|
};
|