cmGlobalCommonGenerator.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. file Copyright.txt or https://cmake.org/licensing for details. */
  3. #pragma once
  4. #include "cmConfigure.h" // IWYU pragma: keep
  5. #include <map>
  6. #include <set>
  7. #include <string>
  8. #include <vector>
  9. #include "cmGlobalGenerator.h"
  10. class cmake;
  11. class cmGeneratorTarget;
  12. class cmLocalGenerator;
  13. /** \class cmGlobalCommonGenerator
  14. * \brief Common infrastructure for Makefile and Ninja global generators.
  15. */
  16. class cmGlobalCommonGenerator : public cmGlobalGenerator
  17. {
  18. public:
  19. cmGlobalCommonGenerator(cmake* cm);
  20. ~cmGlobalCommonGenerator() override;
  21. struct DirectoryTarget
  22. {
  23. cmLocalGenerator* LG = nullptr;
  24. struct Target
  25. {
  26. cmGeneratorTarget const* GT = nullptr;
  27. std::vector<std::string> ExcludedFromAllInConfigs;
  28. };
  29. std::vector<Target> Targets;
  30. struct Dir
  31. {
  32. std::string Path;
  33. bool ExcludeFromAll = false;
  34. };
  35. std::vector<Dir> Children;
  36. };
  37. std::map<std::string, DirectoryTarget> ComputeDirectoryTargets() const;
  38. bool IsExcludedFromAllInConfig(const DirectoryTarget::Target& t,
  39. const std::string& config);
  40. void AddClangTidyExportFixesDir(const std::string& dir)
  41. {
  42. this->ClangTidyExportFixesDirs.insert(dir);
  43. }
  44. void AddClangTidyExportFixesFile(const std::string& file)
  45. {
  46. this->ClangTidyExportFixesFiles.insert(file);
  47. }
  48. protected:
  49. virtual bool SupportsDirectConsole() const { return true; }
  50. const char* GetEditCacheTargetName() const override { return "edit_cache"; }
  51. std::string GetEditCacheCommand() const override;
  52. std::set<std::string> ClangTidyExportFixesDirs;
  53. std::set<std::string> ClangTidyExportFixesFiles;
  54. void RemoveUnknownClangTidyExportFixesFiles() const;
  55. };