/*============================================================================ 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 class cmGlobalGenerator; class cmMakefile; class cmQtAutoGenerators { public: cmQtAutoGenerators(); bool Run(const char* targetDirectory, const char *config); bool InitializeAutogenTarget(cmTarget* target); void SetupAutoGenerateTarget(cmTarget* target); private: void SetupAutoMocTarget(cmTarget* target, const std::string &autogenTargetName, std::map &configIncludes, std::map &configDefines); void SetupAutoUicTarget(cmTarget* target, std::map &configUicOptions); void SetupAutoRccTarget(cmTarget* target); cmGlobalGenerator* CreateGlobalGenerator(cmake* cm, const char* targetDirectory); bool ReadAutogenInfoFile(cmMakefile* makefile, const char* targetDirectory, const char *config); bool ReadOldMocDefinitionsFile(cmMakefile* makefile, const char* targetDirectory); void WriteOldMocDefinitionsFile(const char* 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& uiFileName); bool GenerateQrc(); void ParseCppFile(const std::string& absFilename, const std::vector& headerExtensions, std::map& includedMocs, std::vector& includedUis); void StrictParseCppFile(const std::string& absFilename, const std::vector& headerExtensions, std::map& includedMocs, std::vector& 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::vector& includedUis); void ParseForUic(const std::string& fileName, const std::string& contentsString, std::vector& includedUis); void ParseForUic(const std::string& fileName, std::vector& 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); std::string ReadAll(const std::string& filename); void MergeUicOptions(std::vector &opts, const std::vector &fileOpts, bool isQt5); void MergeRccOptions(std::vector &opts, const std::vector &fileOpts, bool isQt5); std::string QtMajorVersion; std::string Sources; std::string RccSources; std::string SkipMoc; std::string SkipUic; std::string Headers; bool IncludeProjectDirsBefore; 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 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; bool Verbose; bool ColorOutput; bool RunMocFailed; bool RunUicFailed; bool RunRccFailed; bool GenerateAll; bool RelaxedMode; }; #endif