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
This commit is contained in:
Alex Neundorf 2016-02-24 22:13:04 +01:00
parent 6ee6b17ed5
commit aff38945d6
2 changed files with 10 additions and 4 deletions

View File

@ -42,6 +42,8 @@ cmExtraEclipseCDT4Generator
this->GenerateLinkedResources = true; this->GenerateLinkedResources = true;
this->SupportsGmakeErrorParser = true; this->SupportsGmakeErrorParser = true;
this->SupportsMachO64Parser = 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.ccnature");
this->Natures.insert("org.eclipse.cdt.core.cnature"); this->Natures.insert("org.eclipse.cdt.core.cnature");
this->CXXEnabled = true;
} }
else if (*lit == "C") else if (*lit == "C")
{ {
this->Natures.insert("org.eclipse.cdt.core.cnature"); this->Natures.insert("org.eclipse.cdt.core.cnature");
this->CEnabled = true;
} }
else if (*lit == "Java") else if (*lit == "Java")
{ {
@ -890,7 +894,7 @@ void cmExtraEclipseCDT4Generator::CreateCProjectFile() const
// add system defined c macros // add system defined c macros
const char* cDefs=mf->GetDefinition( const char* cDefs=mf->GetDefinition(
"CMAKE_EXTRA_GENERATOR_C_SYSTEM_DEFINED_MACROS"); "CMAKE_EXTRA_GENERATOR_C_SYSTEM_DEFINED_MACROS");
if(cDefs) if(this->CEnabled && cDefs)
{ {
// Expand the list. // Expand the list.
std::vector<std::string> defs; std::vector<std::string> defs;
@ -925,7 +929,7 @@ void cmExtraEclipseCDT4Generator::CreateCProjectFile() const
// add system defined c++ macros // add system defined c++ macros
const char* cxxDefs = mf->GetDefinition( const char* cxxDefs = mf->GetDefinition(
"CMAKE_EXTRA_GENERATOR_CXX_SYSTEM_DEFINED_MACROS"); "CMAKE_EXTRA_GENERATOR_CXX_SYSTEM_DEFINED_MACROS");
if(cxxDefs) if(this->CXXEnabled && cxxDefs)
{ {
// Expand the list. // Expand the list.
std::vector<std::string> defs; std::vector<std::string> defs;
@ -979,7 +983,7 @@ void cmExtraEclipseCDT4Generator::CreateCProjectFile() const
// CMakeSystemSpecificInformation.cmake. This makes Eclipse find the // CMakeSystemSpecificInformation.cmake. This makes Eclipse find the
// standard headers. // standard headers.
std::string compiler = mf->GetSafeDefinition("CMAKE_C_COMPILER"); std::string compiler = mf->GetSafeDefinition("CMAKE_C_COMPILER");
if (!compiler.empty()) if (this->CEnabled && !compiler.empty())
{ {
std::string systemIncludeDirs = mf->GetSafeDefinition( std::string systemIncludeDirs = mf->GetSafeDefinition(
"CMAKE_EXTRA_GENERATOR_C_SYSTEM_INCLUDE_DIRS"); "CMAKE_EXTRA_GENERATOR_C_SYSTEM_INCLUDE_DIRS");
@ -988,7 +992,7 @@ void cmExtraEclipseCDT4Generator::CreateCProjectFile() const
this->AppendIncludeDirectories(fout, dirs, emmited); this->AppendIncludeDirectories(fout, dirs, emmited);
} }
compiler = mf->GetSafeDefinition("CMAKE_CXX_COMPILER"); compiler = mf->GetSafeDefinition("CMAKE_CXX_COMPILER");
if (!compiler.empty()) if (this->CXXEnabled && !compiler.empty())
{ {
std::string systemIncludeDirs = mf->GetSafeDefinition( std::string systemIncludeDirs = mf->GetSafeDefinition(
"CMAKE_EXTRA_GENERATOR_CXX_SYSTEM_INCLUDE_DIRS"); "CMAKE_EXTRA_GENERATOR_CXX_SYSTEM_INCLUDE_DIRS");

View File

@ -116,6 +116,8 @@ private:
bool SupportsVirtualFolders; bool SupportsVirtualFolders;
bool SupportsGmakeErrorParser; bool SupportsGmakeErrorParser;
bool SupportsMachO64Parser; bool SupportsMachO64Parser;
bool CEnabled;
bool CXXEnabled;
}; };