/* 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 // IWYU pragma: keep #include #include #include #include #include #include #include class cmMakefile; class cmQtAutoGenerators { public: cmQtAutoGenerators(); bool Run(const std::string& targetDirectory, const std::string& config); private: bool ReadAutogenInfoFile(cmMakefile* makefile, const std::string& targetDirectory, const std::string& config); void ReadOldMocDefinitionsFile(cmMakefile* makefile, const std::string& targetDirectory); bool WriteOldMocDefinitionsFile(const std::string& targetDirectory); std::string MakeCompileSettingsString(cmMakefile* makefile); bool RunAutogen(cmMakefile* makefile); bool GenerateMocFiles( const std::map& includedMocs, const std::map& notIncludedMocs); bool GenerateMoc(const std::string& sourceFile, const std::string& mocFileName, const std::string& subDirPrefix); bool GenerateUiFiles( const std::map >& includedUis); bool GenerateUi(const std::string& realName, const std::string& uiInputFile, const std::string& uiOutputFile); bool GenerateQrcFiles(); bool GenerateQrc(const std::string& qrcInputFile, const std::string& qrcOutputFile, bool unique_n); bool ParseSourceFile( const std::string& absFilename, const std::vector& headerExtensions, std::map& includedMocs, std::map >& includedUis, bool relaxed); void SearchHeadersForSourceFile( const std::string& absFilename, const std::vector& headerExtensions, std::set& absHeadersMoc, std::set& absHeadersUic); void ParseHeaders( const std::set& absHeadersMoc, const std::set& absHeadersUic, const std::map& includedMocs, std::map& notIncludedMocs, std::map >& includedUis); bool requiresMocing(const std::string& text, std::string& macroName); void ParseContentForUic( const std::string& fileName, const std::string& contentsString, std::map >& includedUis); bool ParseContentForMoc(const std::string& absFilename, const std::string& contentsString, const std::vector& headerExtensions, std::map& includedMocs, bool relaxed); void ParseForUic( const std::string& fileName, std::map >& includedUis); void Init(); bool MocSkipTest(const std::string& absFilename); bool UicSkipTest(const std::string& absFilename); bool NameCollisionTest(const std::map& genFiles, std::multimap& collisions); void LogErrorNameCollision( const std::string& message, const std::multimap& 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& command); bool MakeParentDirectory(const std::string& filename); std::string JoinExts(const std::vector& lst); static void MergeUicOptions(std::vector& opts, const std::vector& fileOpts, bool isQt5); bool InputFilesNewerThanQrc(const std::string& qrcFile, const std::string& rccOutput); // - 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 Sources; std::vector Headers; // - Moc std::vector SkipMoc; std::string MocCompileDefinitionsStr; std::string MocIncludesStr; std::string MocOptionsStr; std::string OutMocCppFilenameRel; std::string OutMocCppFilenameAbs; std::list MocIncludes; std::list MocDefinitions; std::vector MocOptions; // - Uic std::vector SkipUic; std::vector UicTargetOptions; std::map UicOptions; // - Rcc std::vector RccSources; std::map RccOptions; std::map > RccInputs; // - Settings std::string CurrentCompileSettingsStr; std::string OldCompileSettingsStr; // - 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 GenerateAll; bool MocRelaxedMode; }; #endif