diff options
author | Sebastian Holtermann <sebholt@xwmw.org> | 2018-01-31 12:54:37 (GMT) |
---|---|---|
committer | Sebastian Holtermann <sebholt@xwmw.org> | 2018-02-02 08:10:40 (GMT) |
commit | a8ee7406a74cbc4d5e341ad33210b8eeb99af48f (patch) | |
tree | 3d13bde5ee4e44cc66eca61faff9007e108f53ad /Source/cmQtAutoGenInitializer.h | |
parent | 5a16e762e21e22e7a212acc7e2bc7bd027d66166 (diff) | |
download | CMake-a8ee7406a74cbc4d5e341ad33210b8eeb99af48f.zip CMake-a8ee7406a74cbc4d5e341ad33210b8eeb99af48f.tar.gz CMake-a8ee7406a74cbc4d5e341ad33210b8eeb99af48f.tar.bz2 |
Autogen: Improved multi-config include scheme
For multi configuration generators AUTOMOC generates the
moc files that are included in `mocs_compilation.cpp`
in `AUTOGEN_BUILD_DIR/include_$<CONFIG>/`. By doing so each
configuration reads different moc files when compiling
`mocs_compilation.cpp`. Since we do not (need to) rewrite
`mocs_compilation.cpp` on a configuration change anymore,
the files also does not need to be recompiled anymore.
Not having to rewrite and recompile `mocs_compilation.cpp`
on a configuration change anymore was the main objective of
this patch.
In a similar fashion AUTORCC generates a `qrc_BASE_CMAKE.cpp`
file below `AUTOGEN_BUILD_DIR/include_$<CONFIG>/` and
`qrc_BASE.cpp` becomes a mere wrapper that includes this
actuall rcc output file (when using multi configuration
generators).
The template files `Modules/AutoRccInfo.cmake.in` and
`Modules/AutogenInfo.cmake.in` were removed in favor
of writing the info `.cmake` files manually.
Closes #17230
Diffstat (limited to 'Source/cmQtAutoGenInitializer.h')
-rw-r--r-- | Source/cmQtAutoGenInitializer.h | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/Source/cmQtAutoGenInitializer.h b/Source/cmQtAutoGenInitializer.h index a667017..2a47e46 100644 --- a/Source/cmQtAutoGenInitializer.h +++ b/Source/cmQtAutoGenInitializer.h @@ -21,6 +21,7 @@ public: static std::string GetQtMinorVersion(cmGeneratorTarget const* target, std::string const& qtVersionMajor); + /// @brief Rcc job information class Qrc { public: @@ -55,8 +56,7 @@ private: void SetupCustomTargetsMoc(); void SetupCustomTargetsUic(); - std::vector<std::string> AddGeneratedSource(std::string const& filename, - GeneratorT genType); + void AddGeneratedSource(std::string const& filename, GeneratorT genType); bool QtVersionGreaterOrEqual(unsigned long requestMajor, unsigned long requestMinor) const; @@ -70,15 +70,18 @@ private: 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; - MultiConfigT MultiConfig; + std::string Parallel; // Names std::string AutogenTargetName; std::string AutogenFolder; @@ -91,11 +94,21 @@ private: // 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::map<std::string, std::string> ConfigMocIncludes; - std::map<std::string, std::string> ConfigMocDefines; - std::map<std::string, std::string> ConfigUicOptions; + 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; }; |