Bladeren bron

cmGeneratorTarget: Add GetAllConfigCompileLanguages method

Return all languages needed to compile sources in the target in
any configuration.
Brad King 6 jaren geleden
bovenliggende
commit
324988a6b1
2 gewijzigde bestanden met toevoegingen van 17 en 0 verwijderingen
  1. 13 0
      Source/cmGeneratorTarget.cxx
  2. 4 0
      Source/cmGeneratorTarget.h

+ 13 - 0
Source/cmGeneratorTarget.cxx

@@ -1670,6 +1670,19 @@ void cmGeneratorTarget::ComputeAllConfigSources() const
   }
 }
 
+std::set<std::string> cmGeneratorTarget::GetAllConfigCompileLanguages() const
+{
+  std::set<std::string> languages;
+  std::vector<AllConfigSource> const& sources = this->GetAllConfigSources();
+  for (AllConfigSource const& si : sources) {
+    std::string const& lang = si.Source->GetOrDetermineLanguage();
+    if (!lang.empty()) {
+      languages.emplace(lang);
+    }
+  }
+  return languages;
+}
+
 std::string cmGeneratorTarget::GetCompilePDBName(
   const std::string& config) const
 {

+ 4 - 0
Source/cmGeneratorTarget.h

@@ -132,6 +132,10 @@ public:
       per-source configurations assigned.  */
   std::vector<AllConfigSource> const& GetAllConfigSources() const;
 
+  /** Get all languages used to compile sources in any configuration.
+      This excludes the languages of objects from object libraries.  */
+  std::set<std::string> GetAllConfigCompileLanguages() const;
+
   void GetObjectSources(std::vector<cmSourceFile const*>&,
                         const std::string& config) const;
   const std::string& GetObjectName(cmSourceFile const* file);