cmQtAutoGenInitializer.h 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  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 cmQtAutoGenInitializer_h
  4. #define cmQtAutoGenInitializer_h
  5. #include "cmConfigure.h" // IWYU pragma: keep
  6. #include "cmQtAutoGen.h"
  7. #include <map>
  8. #include <set>
  9. #include <string>
  10. #include <vector>
  11. class cmGeneratorTarget;
  12. /// @brief Initializes the QtAutoGen generators
  13. class cmQtAutoGenInitializer : public cmQtAutoGen
  14. {
  15. public:
  16. static std::string GetQtMajorVersion(cmGeneratorTarget const* target);
  17. static std::string GetQtMinorVersion(cmGeneratorTarget const* target,
  18. std::string const& qtVersionMajor);
  19. /// @brief Rcc job information
  20. class Qrc
  21. {
  22. public:
  23. Qrc()
  24. : Generated(false)
  25. , Unique(false)
  26. {
  27. }
  28. public:
  29. std::string QrcFile;
  30. std::string QrcName;
  31. std::string PathChecksum;
  32. std::string InfoFile;
  33. std::string SettingsFile;
  34. std::string RccFile;
  35. bool Generated;
  36. bool Unique;
  37. std::vector<std::string> Options;
  38. std::vector<std::string> Resources;
  39. };
  40. public:
  41. cmQtAutoGenInitializer(cmGeneratorTarget* target, bool mocEnabled,
  42. bool uicEnabled, bool rccEnabled,
  43. std::string const& qtVersionMajor);
  44. void InitCustomTargets();
  45. void SetupCustomTargets();
  46. private:
  47. void SetupCustomTargetsMoc();
  48. void SetupCustomTargetsUic();
  49. void AddGeneratedSource(std::string const& filename, GeneratorT genType);
  50. bool QtVersionGreaterOrEqual(unsigned long requestMajor,
  51. unsigned long requestMinor) const;
  52. bool RccListInputs(std::string const& fileName,
  53. std::vector<std::string>& files,
  54. std::string& errorMessage);
  55. private:
  56. cmGeneratorTarget* Target;
  57. bool MocEnabled;
  58. bool UicEnabled;
  59. bool RccEnabled;
  60. bool MultiConfig;
  61. // Qt
  62. std::string QtVersionMajor;
  63. std::string QtVersionMinor;
  64. std::string MocExecutable;
  65. std::string UicExecutable;
  66. std::string RccExecutable;
  67. std::vector<std::string> RccListOptions;
  68. // Configurations
  69. std::string ConfigDefault;
  70. std::vector<std::string> ConfigsList;
  71. std::string Parallel;
  72. // Names
  73. std::string AutogenTargetName;
  74. std::string AutogenFolder;
  75. std::string AutogenInfoFile;
  76. std::string AutogenSettingsFile;
  77. // Directories
  78. std::string DirInfo;
  79. std::string DirBuild;
  80. std::string DirWork;
  81. // Sources
  82. std::vector<std::string> Headers;
  83. std::vector<std::string> Sources;
  84. // Moc
  85. std::string MocPredefsCmd;
  86. std::set<std::string> MocSkip;
  87. std::string MocIncludes;
  88. std::map<std::string, std::string> MocIncludesConfig;
  89. std::string MocDefines;
  90. std::map<std::string, std::string> MocDefinesConfig;
  91. // Uic
  92. std::set<std::string> UicSkip;
  93. std::vector<std::string> UicSearchPaths;
  94. std::string UicOptions;
  95. std::map<std::string, std::string> UicOptionsConfig;
  96. std::vector<std::string> UicFileFiles;
  97. std::vector<std::vector<std::string>> UicFileOptions;
  98. // Rcc
  99. std::vector<Qrc> Qrcs;
  100. };
  101. #endif