cmQtAutoGenerators.h 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. file Copyright.txt or https://cmake.org/licensing for details. */
  3. #ifndef cmQtAutoGenerators_h
  4. #define cmQtAutoGenerators_h
  5. #include <cmConfigure.h> // IWYU pragma: keep
  6. #include <list>
  7. #include <map>
  8. #include <set>
  9. #include <string>
  10. #include <vector>
  11. class cmMakefile;
  12. class cmQtAutoGenerators
  13. {
  14. public:
  15. cmQtAutoGenerators();
  16. bool Run(const std::string& targetDirectory, const std::string& config);
  17. private:
  18. bool ReadAutogenInfoFile(cmMakefile* makefile,
  19. const std::string& targetDirectory,
  20. const std::string& config);
  21. void ReadOldMocDefinitionsFile(cmMakefile* makefile,
  22. const std::string& targetDirectory);
  23. bool WriteOldMocDefinitionsFile(const std::string& targetDirectory);
  24. std::string MakeCompileSettingsString(cmMakefile* makefile);
  25. bool RunAutogen(cmMakefile* makefile);
  26. bool GenerateMocFiles(
  27. const std::map<std::string, std::string>& includedMocs,
  28. const std::map<std::string, std::string>& notIncludedMocs);
  29. bool GenerateMoc(const std::string& sourceFile,
  30. const std::string& mocFileName);
  31. bool GenerateUiFiles(
  32. const std::map<std::string, std::vector<std::string> >& includedUis);
  33. bool GenerateUi(const std::string& realName, const std::string& uiInputFile,
  34. const std::string& uiOutputFile);
  35. bool GenerateQrcFiles();
  36. bool GenerateQrc(const std::string& qrcInputFile,
  37. const std::string& qrcOutputFile, bool unique_n);
  38. void ParseCppFile(
  39. const std::string& absFilename,
  40. const std::vector<std::string>& headerExtensions,
  41. std::map<std::string, std::string>& includedMocs,
  42. std::map<std::string, std::vector<std::string> >& includedUis);
  43. void StrictParseCppFile(
  44. const std::string& absFilename,
  45. const std::vector<std::string>& headerExtensions,
  46. std::map<std::string, std::string>& includedMocs,
  47. std::map<std::string, std::vector<std::string> >& includedUis);
  48. void SearchHeadersForCppFile(
  49. const std::string& absFilename,
  50. const std::vector<std::string>& headerExtensions,
  51. std::set<std::string>& absHeaders);
  52. void ParseHeaders(
  53. const std::set<std::string>& absHeaders,
  54. const std::map<std::string, std::string>& includedMocs,
  55. std::map<std::string, std::string>& notIncludedMocs,
  56. std::map<std::string, std::vector<std::string> >& includedUis);
  57. void ParseForUic(
  58. const std::string& fileName, const std::string& contentsString,
  59. std::map<std::string, std::vector<std::string> >& includedUis);
  60. void ParseForUic(
  61. const std::string& fileName,
  62. std::map<std::string, std::vector<std::string> >& includedUis);
  63. void Init();
  64. bool NameCollisionTest(const std::map<std::string, std::string>& genFiles,
  65. std::multimap<std::string, std::string>& collisions);
  66. void NameCollisionLog(
  67. const std::string& message,
  68. const std::multimap<std::string, std::string>& collisions);
  69. void LogInfo(const std::string& message);
  70. void LogError(const std::string& message);
  71. void LogCommand(const std::vector<std::string>& command);
  72. std::string JoinExts(const std::vector<std::string>& lst);
  73. static void MergeUicOptions(std::vector<std::string>& opts,
  74. const std::vector<std::string>& fileOpts,
  75. bool isQt5);
  76. bool InputFilesNewerThanQrc(const std::string& qrcFile,
  77. const std::string& rccOutput);
  78. std::string QtMajorVersion;
  79. std::string Sources;
  80. std::vector<std::string> RccSources;
  81. std::string SkipMoc;
  82. std::string SkipUic;
  83. std::string Headers;
  84. std::string Srcdir;
  85. std::string Builddir;
  86. std::string MocExecutable;
  87. std::string UicExecutable;
  88. std::string RccExecutable;
  89. std::string MocCompileDefinitionsStr;
  90. std::string MocIncludesStr;
  91. std::string MocOptionsStr;
  92. std::string ProjectBinaryDir;
  93. std::string ProjectSourceDir;
  94. std::string TargetName;
  95. std::string OriginTargetName;
  96. std::string CurrentCompileSettingsStr;
  97. std::string OldCompileSettingsStr;
  98. std::string TargetBuildSubDir;
  99. std::string OutMocCppFilenameRel;
  100. std::string OutMocCppFilenameAbs;
  101. std::list<std::string> MocIncludes;
  102. std::list<std::string> MocDefinitions;
  103. std::vector<std::string> MocOptions;
  104. std::vector<std::string> UicTargetOptions;
  105. std::map<std::string, std::string> UicOptions;
  106. std::map<std::string, std::string> RccOptions;
  107. std::map<std::string, std::vector<std::string> > RccInputs;
  108. bool IncludeProjectDirsBefore;
  109. bool Verbose;
  110. bool ColorOutput;
  111. bool RunMocFailed;
  112. bool RunUicFailed;
  113. bool RunRccFailed;
  114. bool GenerateAll;
  115. bool MocRelaxedMode;
  116. };
  117. #endif