diff options
Diffstat (limited to 'Source/cmQtAutoGenInitializer.h')
-rw-r--r-- | Source/cmQtAutoGenInitializer.h | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/Source/cmQtAutoGenInitializer.h b/Source/cmQtAutoGenInitializer.h new file mode 100644 index 000000000..2a47e46a4 --- /dev/null +++ b/Source/cmQtAutoGenInitializer.h @@ -0,0 +1,115 @@ +/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying + file Copyright.txt or https://cmake.org/licensing for details. */ +#ifndef cmQtAutoGenInitializer_h +#define cmQtAutoGenInitializer_h + +#include "cmConfigure.h" // IWYU pragma: keep +#include "cmQtAutoGen.h" + +#include <map> +#include <set> +#include <string> +#include <vector> + +class cmGeneratorTarget; + +/// @brief Initializes the QtAutoGen generators +class cmQtAutoGenInitializer : public cmQtAutoGen +{ +public: + static std::string GetQtMajorVersion(cmGeneratorTarget const* target); + static std::string GetQtMinorVersion(cmGeneratorTarget const* target, + std::string const& qtVersionMajor); + + /// @brief Rcc job information + class Qrc + { + public: + Qrc() + : Generated(false) + , Unique(false) + { + } + + public: + std::string QrcFile; + std::string QrcName; + std::string PathChecksum; + std::string InfoFile; + std::string SettingsFile; + std::string RccFile; + bool Generated; + bool Unique; + std::vector<std::string> Options; + std::vector<std::string> Resources; + }; + +public: + cmQtAutoGenInitializer(cmGeneratorTarget* target, bool mocEnabled, + bool uicEnabled, bool rccEnabled, + std::string const& qtVersionMajor); + + void InitCustomTargets(); + void SetupCustomTargets(); + +private: + void SetupCustomTargetsMoc(); + void SetupCustomTargetsUic(); + + void AddGeneratedSource(std::string const& filename, GeneratorT genType); + + bool QtVersionGreaterOrEqual(unsigned long requestMajor, + unsigned long requestMinor) const; + + bool RccListInputs(std::string const& fileName, + std::vector<std::string>& files, + std::string& errorMessage); + +private: + cmGeneratorTarget* Target; + bool MocEnabled; + bool UicEnabled; + bool RccEnabled; + bool MultiConfig; + // Qt + std::string QtVersionMajor; + std::string QtVersionMinor; + std::string MocExecutable; + std::string UicExecutable; + std::string RccExecutable; + std::vector<std::string> RccListOptions; + // Configurations + std::string ConfigDefault; + std::vector<std::string> ConfigsList; + std::string Parallel; + // Names + std::string AutogenTargetName; + std::string AutogenFolder; + std::string AutogenInfoFile; + std::string AutogenSettingsFile; + // Directories + std::string DirInfo; + std::string DirBuild; + std::string DirWork; + // Sources + std::vector<std::string> Headers; + std::vector<std::string> Sources; + // Moc + std::string MocPredefsCmd; + std::set<std::string> MocSkip; + std::string MocIncludes; + std::map<std::string, std::string> MocIncludesConfig; + std::string MocDefines; + std::map<std::string, std::string> MocDefinesConfig; + // Uic + std::set<std::string> UicSkip; + std::vector<std::string> UicSearchPaths; + std::string UicOptions; + std::map<std::string, std::string> UicOptionsConfig; + std::vector<std::string> UicFileFiles; + std::vector<std::vector<std::string>> UicFileOptions; + // Rcc + std::vector<Qrc> Qrcs; +}; + +#endif |