summaryrefslogtreecommitdiffstats
path: root/Source/cmQtAutoGenInitializer.h
diff options
context:
space:
mode:
authorSebastian Holtermann <sebholt@xwmw.org>2018-01-31 12:54:37 (GMT)
committerSebastian Holtermann <sebholt@xwmw.org>2018-02-02 08:10:40 (GMT)
commita8ee7406a74cbc4d5e341ad33210b8eeb99af48f (patch)
tree3d13bde5ee4e44cc66eca61faff9007e108f53ad /Source/cmQtAutoGenInitializer.h
parent5a16e762e21e22e7a212acc7e2bc7bd027d66166 (diff)
downloadCMake-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.h25
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;
};