/* 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 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); bool ReadOldMocDefinitionsFile(cmMakefile* makefile, const std::string& targetDirectory); void 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); 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); void ParseCppFile( const std::string& absFilename, const std::vector& headerExtensions, std::map& includedMocs, std::map >& includedUis); void StrictParseCppFile( const std::string& absFilename, const std::vector& headerExtensions, std::map& includedMocs, std::map >& includedUis); void SearchHeadersForCppFile( const std::string& absFilename, const std::vector& headerExtensions, std::set& absHeaders); void ParseHeaders( const std::set& absHeaders, const std::map& includedMocs, std::map& notIncludedMocs, std::map >& includedUis); void ParseForUic( const std::string& fileName, const std::string& contentsString, std::map >& includedUis); void ParseForUic( const std::string& fileName, std::map >& includedUis); void Init(); bool NameCollisionTest(const std::map& genFiles, std::multimap& collisions); void NameCollisionLog( const std::string& message, const std::multimap& collisions); void LogInfo(const std::string& message); void LogError(const std::string& message); void LogCommand(const std::vector& command); 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); std::string QtMajorVersion; std::string Sources; std::vector RccSources; std::string SkipMoc; std::string SkipUic; std::string Headers; std::string Srcdir; std::string Builddir; std::string MocExecutable; std::string UicExecutable; std::string RccExecutable; std::string MocCompileDefinitionsStr; std::string MocIncludesStr; std::string MocOptionsStr; std::string ProjectBinaryDir; std::string ProjectSourceDir; std::string TargetName; std::string OriginTargetName; std::string CurrentCompileSettingsStr; std::string OldCompileSettingsStr; std::string TargetBuildSubDir; std::string OutMocCppFilenameRel; std::string OutMocCppFilenameAbs; std::list MocIncludes; std::list MocDefinitions; std::vector MocOptions; std::vector UicTargetOptions; std::map UicOptions; std::map RccOptions; std::map > RccInputs; bool IncludeProjectDirsBefore; bool Verbose; bool ColorOutput; bool RunMocFailed; bool RunUicFailed; bool RunRccFailed; bool GenerateAll; bool RelaxedMode; }; #endif