/*============================================================================ 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 cmQtAutomoc_h #define cmQtAutomoc_h class cmGlobalGenerator; class cmMakefile; class cmQtAutomoc { public: cmQtAutomoc(); bool Run(const char* targetDirectory); void InitializeMocSourceFile(cmTarget* target); void SetupAutomocTarget(cmTarget* target); private: cmGlobalGenerator* CreateGlobalGenerator(cmake* cm, const char* targetDirectory); bool ReadAutomocInfoFile(cmMakefile* makefile, const char* targetDirectory); bool ReadOldMocDefinitionsFile(cmMakefile* makefile, const char* targetDirectory); void WriteOldMocDefinitionsFile(const char* targetDirectory); std::string MakeCompileSettingsString(cmMakefile* makefile); bool RunAutomoc(cmMakefile* makefile); bool GenerateMoc(const std::string& sourceFile, const std::string& mocFileName); void ParseCppFile(const std::string& absFilename, const std::vector& headerExtensions, std::map& includedMocs); void StrictParseCppFile(const std::string& absFilename, const std::vector& headerExtensions, std::map& includedMocs); 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); 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); std::string QtMajorVersion; std::string Sources; std::string Headers; bool IncludeProjectDirsBefore; std::string Srcdir; std::string Builddir; std::string MocExecutable; 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; bool Verbose; bool ColorOutput; bool RunMocFailed; bool GenerateAll; bool RelaxedMode; }; #endif