Просмотр исходного кода

Merge topic 'codelite-global-setting'

80574a38 Codelite: Consume the CMAKE_CODELITE_USE_TARGETS setting globally
f59e8779 cmGlobalGenerator: Add API to get settings from top-level cmMakefile
Brad King 9 лет назад
Родитель
Сommit
f7fc93281b

+ 3 - 2
Help/variable/CMAKE_CODELITE_USE_TARGETS.rst

@@ -3,5 +3,6 @@ CMAKE_CODELITE_USE_TARGETS
 
 Change the way the CodeLite generator creates projectfiles.
 
-If this variable is set to ``ON`` the generator creates projectfiles
-based on targets rather than projects.
+If this variable evaluates to ``ON`` at the end of the top-level
+``CMakeLists.txt`` file, the generator creates projectfiles based on targets
+rather than projects.

+ 1 - 3
Source/cmExtraCodeLiteGenerator.cxx

@@ -60,7 +60,6 @@ void cmExtraCodeLiteGenerator::Generate()
   // loop projects and locate the root project.
   // and extract the information for creating the worspace
   // root makefile
-  const cmMakefile* rmf = CM_NULLPTR;
   for (std::map<std::string, std::vector<cmLocalGenerator*> >::const_iterator
          it = projectMap.begin();
        it != projectMap.end(); ++it) {
@@ -75,7 +74,6 @@ void cmExtraCodeLiteGenerator::Generate()
       workspaceFileName = workspaceOutputDir + "/";
       workspaceFileName += workspaceProjectName + ".workspace";
       this->WorkspacePath = it->second[0]->GetCurrentBinaryDirectory();
-      rmf = it->second[0]->GetMakefile();
       ;
       break;
     }
@@ -89,7 +87,7 @@ void cmExtraCodeLiteGenerator::Generate()
   xml.Attribute("Name", workspaceProjectName);
 
   bool const targetsAreProjects =
-    rmf && rmf->IsOn("CMAKE_CODELITE_USE_TARGETS");
+    this->GlobalGenerator->GlobalSettingIsOn("CMAKE_CODELITE_USE_TARGETS");
 
   std::vector<std::string> ProjectNames;
   if (targetsAreProjects) {

+ 19 - 0
Source/cmGlobalGenerator.cxx

@@ -1007,6 +1007,25 @@ void cmGlobalGenerator::FillExtensionToLanguageMap(const std::string& l,
   }
 }
 
+const char* cmGlobalGenerator::GetGlobalSetting(std::string const& name) const
+{
+  assert(!this->Makefiles.empty());
+  return this->Makefiles[0]->GetDefinition(name);
+}
+
+bool cmGlobalGenerator::GlobalSettingIsOn(std::string const& name) const
+{
+  assert(!this->Makefiles.empty());
+  return this->Makefiles[0]->IsOn(name);
+}
+
+const char* cmGlobalGenerator::GetSafeGlobalSetting(
+  std::string const& name) const
+{
+  assert(!this->Makefiles.empty());
+  return this->Makefiles[0]->GetSafeDefinition(name);
+}
+
 bool cmGlobalGenerator::IgnoreFile(const char* ext) const
 {
   if (!this->GetLanguageFromExtension(ext).empty()) {

+ 4 - 0
Source/cmGlobalGenerator.h

@@ -194,6 +194,10 @@ public:
 
   cmExportSetMap& GetExportSets() { return this->ExportSets; }
 
+  const char* GetGlobalSetting(std::string const& name) const;
+  bool GlobalSettingIsOn(std::string const& name) const;
+  const char* GetSafeGlobalSetting(std::string const& name) const;
+
   /** Add a file to the manifest of generated targets for a configuration.  */
   void AddToManifest(std::string const& f);