cmQtAutoGenInitializer.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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. class Qrc
  20. {
  21. public:
  22. Qrc()
  23. : Generated(false)
  24. , Unique(false)
  25. {
  26. }
  27. public:
  28. std::string QrcFile;
  29. std::string QrcName;
  30. std::string PathChecksum;
  31. std::string InfoFile;
  32. std::string SettingsFile;
  33. std::string RccFile;
  34. bool Generated;
  35. bool Unique;
  36. std::vector<std::string> Options;
  37. std::vector<std::string> Resources;
  38. };
  39. public:
  40. cmQtAutoGenInitializer(cmGeneratorTarget* target, bool mocEnabled,
  41. bool uicEnabled, bool rccEnabled,
  42. std::string const& qtVersionMajor);
  43. void InitCustomTargets();
  44. void SetupCustomTargets();
  45. private:
  46. void SetupCustomTargetsMoc();
  47. void SetupCustomTargetsUic();
  48. std::vector<std::string> AddGeneratedSource(std::string const& filename,
  49. 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. // Qt
  61. std::string QtVersionMajor;
  62. std::string QtVersionMinor;
  63. std::string RccExecutable;
  64. std::vector<std::string> RccListOptions;
  65. // Configurations
  66. std::string ConfigDefault;
  67. std::vector<std::string> ConfigsList;
  68. MultiConfigT MultiConfig;
  69. // Names
  70. std::string AutogenTargetName;
  71. std::string AutogenFolder;
  72. std::string AutogenInfoFile;
  73. std::string AutogenSettingsFile;
  74. // Directories
  75. std::string DirInfo;
  76. std::string DirBuild;
  77. std::string DirWork;
  78. // Sources
  79. std::vector<std::string> Headers;
  80. std::vector<std::string> Sources;
  81. std::set<std::string> MocSkip;
  82. std::set<std::string> UicSkip;
  83. std::map<std::string, std::string> ConfigMocIncludes;
  84. std::map<std::string, std::string> ConfigMocDefines;
  85. std::map<std::string, std::string> ConfigUicOptions;
  86. std::vector<Qrc> Qrcs;
  87. };
  88. #endif