cmQtAutoGenerators.h 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  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 <cmsys/RegularExpression.hxx>
  8. #include <list>
  9. #include <map>
  10. #include <set>
  11. #include <string>
  12. #include <vector>
  13. class cmMakefile;
  14. class cmQtAutoGenerators
  15. {
  16. public:
  17. cmQtAutoGenerators();
  18. bool Run(const std::string& targetDirectory, const std::string& config);
  19. private:
  20. // - Configuration
  21. bool ReadAutogenInfoFile(cmMakefile* makefile,
  22. const std::string& targetDirectory,
  23. const std::string& config);
  24. std::string MocSettingsStringCompose();
  25. std::string UicSettingsStringCompose();
  26. std::string RccSettingsStringCompose();
  27. void OldSettingsReadFile(cmMakefile* makefile,
  28. const std::string& targetDirectory);
  29. bool OldSettingsWriteFile(const std::string& targetDirectory);
  30. // - Init and run
  31. void Init();
  32. bool RunAutogen(cmMakefile* makefile);
  33. // - Content analysis
  34. bool requiresMocing(const std::string& text, std::string& macroName);
  35. bool MocSkipTest(const std::string& absFilename);
  36. bool UicSkipTest(const std::string& absFilename);
  37. bool ParseSourceFile(
  38. const std::string& absFilename,
  39. const std::vector<std::string>& headerExtensions,
  40. std::map<std::string, std::string>& includedMocs,
  41. std::map<std::string, std::vector<std::string> >& includedUis,
  42. bool relaxed);
  43. void SearchHeadersForSourceFile(
  44. const std::string& absFilename,
  45. const std::vector<std::string>& headerExtensions,
  46. std::set<std::string>& absHeadersMoc,
  47. std::set<std::string>& absHeadersUic);
  48. void ParseHeaders(
  49. const std::set<std::string>& absHeadersMoc,
  50. const std::set<std::string>& absHeadersUic,
  51. const std::map<std::string, std::string>& includedMocs,
  52. std::map<std::string, std::string>& notIncludedMocs,
  53. std::map<std::string, std::vector<std::string> >& includedUis);
  54. void ParseContentForUic(
  55. const std::string& fileName, const std::string& contentsString,
  56. std::map<std::string, std::vector<std::string> >& includedUis);
  57. bool ParseContentForMoc(const std::string& absFilename,
  58. const std::string& contentsString,
  59. const std::vector<std::string>& headerExtensions,
  60. std::map<std::string, std::string>& includedMocs,
  61. bool relaxed);
  62. // - Moc file generation
  63. bool MocGenerateAll(
  64. const std::map<std::string, std::string>& includedMocs,
  65. const std::map<std::string, std::string>& notIncludedMocs);
  66. bool MocGenerateFile(const std::string& sourceFile,
  67. const std::string& mocFileName,
  68. const std::string& subDirPrefix);
  69. // - Uic file generation
  70. bool UicGenerateAll(
  71. const std::map<std::string, std::vector<std::string> >& includedUis);
  72. bool UicGenerateFile(const std::string& realName,
  73. const std::string& uiInputFile,
  74. const std::string& uiOutputFile);
  75. // - Qrc file generation
  76. bool QrcGenerateAll();
  77. bool QrcGenerateFile(const std::string& qrcInputFile,
  78. const std::string& qrcOutputFile, bool unique_n);
  79. // - Logging
  80. void LogErrorNameCollision(
  81. const std::string& message,
  82. const std::multimap<std::string, std::string>& collisions);
  83. void LogBold(const std::string& message);
  84. void LogInfo(const std::string& message);
  85. void LogWarning(const std::string& message);
  86. void LogError(const std::string& message);
  87. void LogCommand(const std::vector<std::string>& command);
  88. // - Utility
  89. bool NameCollisionTest(const std::map<std::string, std::string>& genFiles,
  90. std::multimap<std::string, std::string>& collisions);
  91. bool MakeParentDirectory(const std::string& filename);
  92. // - Target names
  93. std::string OriginTargetName;
  94. std::string AutogenTargetName;
  95. // - Directories
  96. std::string ProjectSourceDir;
  97. std::string ProjectBinaryDir;
  98. std::string CurrentSourceDir;
  99. std::string CurrentBinaryDir;
  100. std::string AutogenBuildSubDir;
  101. // - Qt environment
  102. std::string QtMajorVersion;
  103. std::string MocExecutable;
  104. std::string UicExecutable;
  105. std::string RccExecutable;
  106. // - File lists
  107. std::vector<std::string> Sources;
  108. std::vector<std::string> Headers;
  109. // - Moc
  110. std::vector<std::string> SkipMoc;
  111. std::string MocCompileDefinitionsStr;
  112. std::string MocIncludesStr;
  113. std::string MocOptionsStr;
  114. std::string OutMocCppFilenameRel;
  115. std::string OutMocCppFilenameAbs;
  116. std::list<std::string> MocIncludes;
  117. std::list<std::string> MocDefinitions;
  118. std::vector<std::string> MocOptions;
  119. std::string MocSettingsString;
  120. // - Uic
  121. std::vector<std::string> SkipUic;
  122. std::vector<std::string> UicTargetOptions;
  123. std::map<std::string, std::string> UicOptions;
  124. std::string UicSettingsString;
  125. // - Rcc
  126. std::vector<std::string> RccSources;
  127. std::map<std::string, std::string> RccOptions;
  128. std::map<std::string, std::vector<std::string> > RccInputs;
  129. std::string RccSettingsString;
  130. // - Utility
  131. cmFilePathChecksum fpathCheckSum;
  132. cmsys::RegularExpression RegExpQObject;
  133. cmsys::RegularExpression RegExpQGadget;
  134. cmsys::RegularExpression RegExpMocInclude;
  135. cmsys::RegularExpression RegExpUicInclude;
  136. // - Flags
  137. bool IncludeProjectDirsBefore;
  138. bool Verbose;
  139. bool ColorOutput;
  140. bool RunMocFailed;
  141. bool RunUicFailed;
  142. bool RunRccFailed;
  143. bool GenerateMocAll;
  144. bool GenerateUicAll;
  145. bool GenerateRccAll;
  146. bool MocRelaxedMode;
  147. };
  148. #endif