| /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying |
| file Copyright.txt or https://cmake.org/licensing for details. */ |
| #ifndef cmQtAutoGenerators_h |
| #define cmQtAutoGenerators_h |
| |
| #include <cmConfigure.h> // IWYU pragma: keep |
| #include <cmFilePathChecksum.h> |
| #include <cmsys/RegularExpression.hxx> |
| |
| #include <list> |
| #include <map> |
| #include <set> |
| #include <string> |
| #include <vector> |
| |
| class cmMakefile; |
| |
| class cmQtAutoGenerators |
| { |
| public: |
| cmQtAutoGenerators(); |
| bool Run(const std::string& targetDirectory, const std::string& config); |
| |
| private: |
| // - Configuration |
| bool ReadAutogenInfoFile(cmMakefile* makefile, |
| const std::string& targetDirectory, |
| const std::string& config); |
| |
| std::string MocSettingsStringCompose(); |
| std::string UicSettingsStringCompose(); |
| std::string RccSettingsStringCompose(); |
| void OldSettingsReadFile(cmMakefile* makefile, |
| const std::string& targetDirectory); |
| bool OldSettingsWriteFile(const std::string& targetDirectory); |
| |
| // - Init and run |
| void Init(); |
| bool RunAutogen(cmMakefile* makefile); |
| |
| // - Content analysis |
| bool MocRequired(const std::string& text, std::string& macroName); |
| bool MocSkipTest(const std::string& absFilename); |
| bool UicSkipTest(const std::string& absFilename); |
| |
| bool ParseSourceFile( |
| const std::string& absFilename, |
| const std::vector<std::string>& headerExtensions, |
| std::map<std::string, std::string>& includedMocs, |
| std::map<std::string, std::vector<std::string> >& includedUis, |
| bool relaxed); |
| |
| void SearchHeadersForSourceFile( |
| const std::string& absFilename, |
| const std::vector<std::string>& headerExtensions, |
| std::set<std::string>& absHeadersMoc, |
| std::set<std::string>& absHeadersUic); |
| |
| void ParseHeaders( |
| const std::set<std::string>& absHeadersMoc, |
| const std::set<std::string>& absHeadersUic, |
| const std::map<std::string, std::string>& includedMocs, |
| std::map<std::string, std::string>& notIncludedMocs, |
| std::map<std::string, std::vector<std::string> >& includedUis); |
| |
| void ParseContentForUic( |
| const std::string& fileName, const std::string& contentsString, |
| std::map<std::string, std::vector<std::string> >& includedUis); |
| |
| bool ParseContentForMoc(const std::string& absFilename, |
| const std::string& contentsString, |
| const std::vector<std::string>& headerExtensions, |
| std::map<std::string, std::string>& includedMocs, |
| bool relaxed); |
| |
| // - Moc file generation |
| bool MocGenerateAll( |
| const std::map<std::string, std::string>& includedMocs, |
| const std::map<std::string, std::string>& notIncludedMocs); |
| bool MocGenerateFile(const std::string& sourceFile, |
| const std::string& mocFileName, |
| const std::string& subDirPrefix); |
| |
| // - Uic file generation |
| bool UicGenerateAll( |
| const std::map<std::string, std::vector<std::string> >& includedUis); |
| bool UicGenerateFile(const std::string& realName, |
| const std::string& uiInputFile, |
| const std::string& uiOutputFile); |
| |
| // - Qrc file generation |
| bool QrcGenerateAll(); |
| bool QrcGenerateFile(const std::string& qrcInputFile, |
| const std::string& qrcOutputFile, bool unique_n); |
| |
| // - Logging |
| void LogErrorNameCollision( |
| const std::string& message, |
| const std::multimap<std::string, std::string>& collisions); |
| void LogBold(const std::string& message); |
| void LogInfo(const std::string& message); |
| void LogWarning(const std::string& message); |
| void LogError(const std::string& message); |
| void LogCommand(const std::vector<std::string>& command); |
| |
| // - Utility |
| bool NameCollisionTest(const std::map<std::string, std::string>& genFiles, |
| std::multimap<std::string, std::string>& collisions); |
| bool MakeParentDirectory(const std::string& filename); |
| |
| // - Target names |
| std::string OriginTargetName; |
| std::string AutogenTargetName; |
| // - Directories |
| std::string ProjectSourceDir; |
| std::string ProjectBinaryDir; |
| std::string CurrentSourceDir; |
| std::string CurrentBinaryDir; |
| std::string AutogenBuildSubDir; |
| // - Qt environment |
| std::string QtMajorVersion; |
| std::string MocExecutable; |
| std::string UicExecutable; |
| std::string RccExecutable; |
| // - File lists |
| std::vector<std::string> Sources; |
| std::vector<std::string> Headers; |
| // - Moc |
| std::vector<std::string> SkipMoc; |
| std::string MocCompileDefinitionsStr; |
| std::string MocIncludesStr; |
| std::string MocOptionsStr; |
| std::string OutMocCppFilenameRel; |
| std::string OutMocCppFilenameAbs; |
| std::list<std::string> MocIncludes; |
| std::list<std::string> MocDefinitions; |
| std::vector<std::string> MocOptions; |
| std::string MocSettingsString; |
| // - Uic |
| std::vector<std::string> SkipUic; |
| std::vector<std::string> UicTargetOptions; |
| std::map<std::string, std::string> UicOptions; |
| std::string UicSettingsString; |
| // - Rcc |
| std::vector<std::string> RccSources; |
| std::map<std::string, std::string> RccOptions; |
| std::map<std::string, std::vector<std::string> > RccInputs; |
| std::string RccSettingsString; |
| // - Utility |
| cmFilePathChecksum fpathCheckSum; |
| cmsys::RegularExpression RegExpQObject; |
| cmsys::RegularExpression RegExpQGadget; |
| cmsys::RegularExpression RegExpMocInclude; |
| cmsys::RegularExpression RegExpUicInclude; |
| // - Flags |
| bool IncludeProjectDirsBefore; |
| bool Verbose; |
| bool ColorOutput; |
| bool RunMocFailed; |
| bool RunUicFailed; |
| bool RunRccFailed; |
| bool GenerateMocAll; |
| bool GenerateUicAll; |
| bool GenerateRccAll; |
| bool MocRelaxedMode; |
| }; |
| |
| #endif |