cmQtAutoGenerators.h 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  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 <cmFilePathChecksum.h>
  7. #include <list>
  8. #include <map>
  9. #include <set>
  10. #include <string>
  11. #include <vector>
  12. class cmMakefile;
  13. class cmQtAutoGenerators
  14. {
  15. public:
  16. cmQtAutoGenerators();
  17. bool Run(const std::string& targetDirectory, const std::string& config);
  18. private:
  19. bool ReadAutogenInfoFile(cmMakefile* makefile,
  20. const std::string& targetDirectory,
  21. const std::string& config);
  22. void ReadOldMocDefinitionsFile(cmMakefile* makefile,
  23. const std::string& targetDirectory);
  24. bool WriteOldMocDefinitionsFile(const std::string& targetDirectory);
  25. std::string MakeCompileSettingsString(cmMakefile* makefile);
  26. bool RunAutogen(cmMakefile* makefile);
  27. bool GenerateMocFiles(
  28. const std::map<std::string, std::string>& includedMocs,
  29. const std::map<std::string, std::string>& notIncludedMocs);
  30. bool GenerateMoc(const std::string& sourceFile,
  31. const std::string& mocFileName,
  32. const std::string& subDirPrefix);
  33. bool GenerateUiFiles(
  34. const std::map<std::string, std::vector<std::string> >& includedUis);
  35. bool GenerateUi(const std::string& realName, const std::string& uiInputFile,
  36. const std::string& uiOutputFile);
  37. bool GenerateQrcFiles();
  38. bool GenerateQrc(const std::string& qrcInputFile,
  39. const std::string& qrcOutputFile, bool unique_n);
  40. bool ParseCppFile(
  41. const std::string& absFilename,
  42. const std::vector<std::string>& headerExtensions,
  43. std::map<std::string, std::string>& includedMocs,
  44. std::map<std::string, std::vector<std::string> >& includedUis);
  45. bool StrictParseCppFile(
  46. const std::string& absFilename,
  47. const std::vector<std::string>& headerExtensions,
  48. std::map<std::string, std::string>& includedMocs,
  49. std::map<std::string, std::vector<std::string> >& includedUis);
  50. void SearchHeadersForCppFile(
  51. const std::string& absFilename,
  52. const std::vector<std::string>& headerExtensions,
  53. std::set<std::string>& absHeaders);
  54. void ParseHeaders(
  55. const std::set<std::string>& absHeaders,
  56. const std::map<std::string, std::string>& includedMocs,
  57. std::map<std::string, std::string>& notIncludedMocs,
  58. std::map<std::string, std::vector<std::string> >& includedUis);
  59. void ParseForUic(
  60. const std::string& fileName, const std::string& contentsString,
  61. std::map<std::string, std::vector<std::string> >& includedUis);
  62. void ParseForUic(
  63. const std::string& fileName,
  64. std::map<std::string, std::vector<std::string> >& includedUis);
  65. void Init();
  66. bool NameCollisionTest(const std::map<std::string, std::string>& genFiles,
  67. std::multimap<std::string, std::string>& collisions);
  68. void LogErrorNameCollision(
  69. const std::string& message,
  70. const std::multimap<std::string, std::string>& collisions);
  71. void LogBold(const std::string& message);
  72. void LogInfo(const std::string& message);
  73. void LogWarning(const std::string& message);
  74. void LogError(const std::string& message);
  75. void LogCommand(const std::vector<std::string>& command);
  76. bool makeParentDirectory(const std::string& filename);
  77. std::string JoinExts(const std::vector<std::string>& lst);
  78. static void MergeUicOptions(std::vector<std::string>& opts,
  79. const std::vector<std::string>& fileOpts,
  80. bool isQt5);
  81. bool InputFilesNewerThanQrc(const std::string& qrcFile,
  82. const std::string& rccOutput);
  83. // - Target names
  84. std::string OriginTargetName;
  85. std::string AutogenTargetName;
  86. // - Directories
  87. std::string ProjectSourceDir;
  88. std::string ProjectBinaryDir;
  89. std::string CurrentSourceDir;
  90. std::string CurrentBinaryDir;
  91. std::string AutogenBuildSubDir;
  92. // - Qt environment
  93. std::string QtMajorVersion;
  94. std::string MocExecutable;
  95. std::string UicExecutable;
  96. std::string RccExecutable;
  97. // - File lists
  98. std::string Sources;
  99. std::string Headers;
  100. // - Moc
  101. std::string SkipMoc;
  102. std::string MocCompileDefinitionsStr;
  103. std::string MocIncludesStr;
  104. std::string MocOptionsStr;
  105. std::string OutMocCppFilenameRel;
  106. std::string OutMocCppFilenameAbs;
  107. std::list<std::string> MocIncludes;
  108. std::list<std::string> MocDefinitions;
  109. std::vector<std::string> MocOptions;
  110. // - Uic
  111. std::string SkipUic;
  112. std::vector<std::string> UicTargetOptions;
  113. std::map<std::string, std::string> UicOptions;
  114. // - Rcc
  115. std::vector<std::string> RccSources;
  116. std::map<std::string, std::string> RccOptions;
  117. std::map<std::string, std::vector<std::string> > RccInputs;
  118. // - Settings
  119. std::string CurrentCompileSettingsStr;
  120. std::string OldCompileSettingsStr;
  121. // - Utility
  122. cmFilePathChecksum fpathCheckSum;
  123. // - Flags
  124. bool IncludeProjectDirsBefore;
  125. bool Verbose;
  126. bool ColorOutput;
  127. bool RunMocFailed;
  128. bool RunUicFailed;
  129. bool RunRccFailed;
  130. bool GenerateAll;
  131. bool MocRelaxedMode;
  132. };
  133. #endif