/*============================================================================ CMake - Cross Platform Makefile Generator Copyright 2004-2011 Kitware, Inc. Copyright 2011 Alexander Neundorf (neundorf@kde.org) Distributed under the OSI-approved BSD License (the "License"); see accompanying file Copyright.txt for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the License for more information. ============================================================================*/ #ifndef cmQtAutoGenerators_h #define cmQtAutoGenerators_h #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 GenerateMoc(const std::string& sourceFile, const std::string& mocFileName); bool GenerateUi(const std::string& realName, const std::string& uiFileName); bool GenerateQrc(); 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(); std::string Join(const std::vector& lst, char separator); bool EndsWith(const std::string& str, const std::string& with); bool StartsWith(const std::string& str, const std::string& with); 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 OutMocCppFilename; 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