summaryrefslogtreecommitdiffstats
path: root/Source/cmExtraEclipseCDT4Generator.cxx
diff options
context:
space:
mode:
authorAlexander Neundorf <neundorf@kde.org>2008-02-07 21:26:00 (GMT)
committerAlexander Neundorf <neundorf@kde.org>2008-02-07 21:26:00 (GMT)
commit732784c0bcdcf0c227107cf4f0077a8dc9ac8d44 (patch)
tree825e9ff5467525778775e8218a1058232032cc79 /Source/cmExtraEclipseCDT4Generator.cxx
parent544c263f48348c6dbdc8735a586f5db3e352b6c4 (diff)
downloadCMake-732784c0bcdcf0c227107cf4f0077a8dc9ac8d44.zip
CMake-732784c0bcdcf0c227107cf4f0077a8dc9ac8d44.tar.gz
CMake-732784c0bcdcf0c227107cf4f0077a8dc9ac8d44.tar.bz2
two patches from Miguel:
BUG: fix #5819: put compile definitions into the eclipse project files so eclipse handles ifdef blcoks correctly STYLE: make the code for filtering some global targets out nicer Alex
Diffstat (limited to 'Source/cmExtraEclipseCDT4Generator.cxx')
-rw-r--r--Source/cmExtraEclipseCDT4Generator.cxx102
1 files changed, 55 insertions, 47 deletions
diff --git a/Source/cmExtraEclipseCDT4Generator.cxx b/Source/cmExtraEclipseCDT4Generator.cxx
index e3c7620..8edd57f 100644
--- a/Source/cmExtraEclipseCDT4Generator.cxx
+++ b/Source/cmExtraEclipseCDT4Generator.cxx
@@ -507,6 +507,52 @@ void cmExtraEclipseCDT4Generator::CreateCProjectFile() const
}
}
+ // add pre-processor definitions to allow eclipse to gray out sections
+ emmited.clear();
+ for (std::vector<cmLocalGenerator*>::const_iterator
+ it = this->GlobalGenerator->GetLocalGenerators().begin();
+ it != this->GlobalGenerator->GetLocalGenerators().end();
+ ++it)
+ {
+
+ if(const char* cdefs = (*it)->GetMakefile()->GetProperty(
+ "COMPILE_DEFINITIONS"))
+ {
+ // Expand the list.
+ std::vector<std::string> defs;
+ cmSystemTools::ExpandListArgument(cdefs, defs);
+
+ for(std::vector<std::string>::const_iterator di = defs.begin();
+ di != defs.end(); ++di)
+ {
+ std::string::size_type equals = di->find('=', 0);
+ std::string::size_type enddef = di->length();
+
+ std::string def;
+ std::string val;
+ if (equals != std::string::npos && equals < enddef)
+ {
+ // we have -DFOO=BAR
+ def = di->substr(0, equals);
+ val = di->substr(equals + 1, enddef - equals + 1);
+ }
+ else
+ {
+ // we have -DFOO
+ def = *di;
+ }
+
+ // insert the definition if not already added.
+ if(emmited.find(def) == emmited.end())
+ {
+ emmited.insert(def);
+ fout << "<pathentry kind=\"mac\" name=\"" << def
+ << "\" path=\"\" value=\"" << val << "\"/>\n";
+ }
+ }
+ }
+ }
+
// include dirs
emmited.clear();
for (std::vector<cmLocalGenerator*>::const_iterator
@@ -561,15 +607,6 @@ void cmExtraEclipseCDT4Generator::CreateCProjectFile() const
::AppendTarget(fout, generator->GetCleanTargetName(), make);
}
- bool installTargetCreated = false;
- bool installStripTargetCreated = false;
- bool testTargetCreated = false;
- bool experimentalTargetCreated = false;
- bool nightlyTargetCreated = false;
- bool packageTargetCreated = false;
- bool packageSourceTargetCreated = false;
- bool rebuildCacheTargetCreated = false;
-
// add all executable and library targets and some of the GLOBAL
// and UTILITY targets
for (std::vector<cmLocalGenerator*>::const_iterator
@@ -585,44 +622,15 @@ void cmExtraEclipseCDT4Generator::CreateCProjectFile() const
case cmTarget::UTILITY:
case cmTarget::GLOBAL_TARGET:
{
- // only add these global targets once
- if ((t->first=="install") && (installTargetCreated==false))
- {
- installTargetCreated=true;
- }
- else if ((t->first=="install/strip")
- && (installStripTargetCreated==false))
- {
- installStripTargetCreated=true;
- }
- else if ((t->first=="test") && (testTargetCreated==false))
- {
- testTargetCreated=true;
- }
- else if ((t->first=="Experimental")
- && (experimentalTargetCreated==false))
- {
- experimentalTargetCreated=true;
- }
- else if ((t->first=="Nightly") && (nightlyTargetCreated==false))
- {
- nightlyTargetCreated=true;
- }
- else if ((t->first=="package") && (packageTargetCreated==false))
- {
- packageTargetCreated=true;
- }
- else if ((t->first=="package_source")
- && (packageSourceTargetCreated==false))
- {
- packageSourceTargetCreated=true;
- }
- else if ((t->first=="rebuild_cache")
- && (rebuildCacheTargetCreated==false))
- {
- rebuildCacheTargetCreated=true;
- }
- else // in all cases above fallthrough
+ // only add these global targets
+ if (!( (t->first=="install")
+ || (t->first=="install/strip")
+ || (t->first=="test")
+ || (t->first=="Experimental")
+ || (t->first=="Nightly")
+ || (t->first=="package")
+ || (t->first=="package_source")
+ || (t->first=="rebuild_cache") ))
{
break;
}