From aff38945d64fc56026255c9cc3c1051529887d7b Mon Sep 17 00:00:00 2001 From: Alex Neundorf Date: Wed, 24 Feb 2016 22:13:04 +0100 Subject: [PATCH] Eclipse: only add C/CXX macros if the language is enabled With this patch, the builtin macros and include dirs are only added to the project file if the C/CXX langauges are really enabled. I.e. before this patch the CXX-stuff was in the project file as soon as CXX had been enabled at least once for this build tree. I.e. disabling CXX later on did not remove the CXX macros etc. from the project file (related to #15150) Alex --- Source/cmExtraEclipseCDT4Generator.cxx | 12 ++++++++---- Source/cmExtraEclipseCDT4Generator.h | 2 ++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/Source/cmExtraEclipseCDT4Generator.cxx b/Source/cmExtraEclipseCDT4Generator.cxx index aedf6f41b2..133a85aee8 100644 --- a/Source/cmExtraEclipseCDT4Generator.cxx +++ b/Source/cmExtraEclipseCDT4Generator.cxx @@ -42,6 +42,8 @@ cmExtraEclipseCDT4Generator this->GenerateLinkedResources = true; this->SupportsGmakeErrorParser = true; this->SupportsMachO64Parser = true; + this->CEnabled = false; + this->CXXEnabled = false; } //---------------------------------------------------------------------------- @@ -64,10 +66,12 @@ void cmExtraEclipseCDT4Generator { this->Natures.insert("org.eclipse.cdt.core.ccnature"); this->Natures.insert("org.eclipse.cdt.core.cnature"); + this->CXXEnabled = true; } else if (*lit == "C") { this->Natures.insert("org.eclipse.cdt.core.cnature"); + this->CEnabled = true; } else if (*lit == "Java") { @@ -890,7 +894,7 @@ void cmExtraEclipseCDT4Generator::CreateCProjectFile() const // add system defined c macros const char* cDefs=mf->GetDefinition( "CMAKE_EXTRA_GENERATOR_C_SYSTEM_DEFINED_MACROS"); - if(cDefs) + if(this->CEnabled && cDefs) { // Expand the list. std::vector defs; @@ -925,7 +929,7 @@ void cmExtraEclipseCDT4Generator::CreateCProjectFile() const // add system defined c++ macros const char* cxxDefs = mf->GetDefinition( "CMAKE_EXTRA_GENERATOR_CXX_SYSTEM_DEFINED_MACROS"); - if(cxxDefs) + if(this->CXXEnabled && cxxDefs) { // Expand the list. std::vector defs; @@ -979,7 +983,7 @@ void cmExtraEclipseCDT4Generator::CreateCProjectFile() const // CMakeSystemSpecificInformation.cmake. This makes Eclipse find the // standard headers. std::string compiler = mf->GetSafeDefinition("CMAKE_C_COMPILER"); - if (!compiler.empty()) + if (this->CEnabled && !compiler.empty()) { std::string systemIncludeDirs = mf->GetSafeDefinition( "CMAKE_EXTRA_GENERATOR_C_SYSTEM_INCLUDE_DIRS"); @@ -988,7 +992,7 @@ void cmExtraEclipseCDT4Generator::CreateCProjectFile() const this->AppendIncludeDirectories(fout, dirs, emmited); } compiler = mf->GetSafeDefinition("CMAKE_CXX_COMPILER"); - if (!compiler.empty()) + if (this->CXXEnabled && !compiler.empty()) { std::string systemIncludeDirs = mf->GetSafeDefinition( "CMAKE_EXTRA_GENERATOR_CXX_SYSTEM_INCLUDE_DIRS"); diff --git a/Source/cmExtraEclipseCDT4Generator.h b/Source/cmExtraEclipseCDT4Generator.h index 16675f2a3d..1da20773a0 100644 --- a/Source/cmExtraEclipseCDT4Generator.h +++ b/Source/cmExtraEclipseCDT4Generator.h @@ -116,6 +116,8 @@ private: bool SupportsVirtualFolders; bool SupportsGmakeErrorParser; bool SupportsMachO64Parser; + bool CEnabled; + bool CXXEnabled; };