[Cmake-commits] [cmake-commits] alex committed cmExtraEclipseCDT4Generator.cxx 1.25 1.26

cmake-commits at cmake.org cmake-commits at cmake.org
Wed Sep 16 14:37:22 EDT 2009


Update of /cvsroot/CMake/CMake/Source
In directory public:/mounts/ram/cvs-serv3685/Source

Modified Files:
	cmExtraEclipseCDT4Generator.cxx 
Log Message:
Put compiler defined macros into eclipse project files

Now gcc is queried also for the builtin definitions, and they are then added
to the .cproject file. This should make the preprocessor highlighting in
eclipse work better (#9272)
Patch mostly from Miguel.

Alex


Index: cmExtraEclipseCDT4Generator.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmExtraEclipseCDT4Generator.cxx,v
retrieving revision 1.25
retrieving revision 1.26
diff -C 2 -d -r1.25 -r1.26
*** cmExtraEclipseCDT4Generator.cxx	10 Sep 2009 17:49:51 -0000	1.25
--- cmExtraEclipseCDT4Generator.cxx	16 Sep 2009 18:37:20 -0000	1.26
***************
*** 575,578 ****
--- 575,647 ----
        }
      }
+   // add system defined c macros
+   const char* cDefs=mf->GetDefinition("CMAKE_ECLIPSE_C_SYSTEM_DEFINED_MACROS");
+   if(cDefs)
+     {
+     // Expand the list.
+     std::vector<std::string> defs;
+     cmSystemTools::ExpandListArgument(cDefs, defs, true);
+ 
+     // the list must contain only definition-value pairs:
+     if ((defs.size() % 2) == 0)
+       {
+       std::vector<std::string>::const_iterator di = defs.begin();
+       while (di != defs.end())
+         {
+         std::string def = *di;
+         ++di;
+         std::string val;
+         if (di != defs.end())
+           {
+           val = *di;
+           ++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=\"" << this->EscapeForXML(val)
+                << "\"/>\n";
+           }
+         }
+       }
+     }
+   // add system defined c++ macros
+   const char* cxxDefs = mf->GetDefinition(
+                                     "CMAKE_ECLIPSE_CXX_SYSTEM_DEFINED_MACROS");
+   if(cxxDefs)
+     {
+     // Expand the list.
+     std::vector<std::string> defs;
+     cmSystemTools::ExpandListArgument(cxxDefs, defs, true);
+ 
+     // the list must contain only definition-value pairs:
+     if ((defs.size() % 2) == 0)
+       {
+       std::vector<std::string>::const_iterator di = defs.begin();
+       while (di != defs.end())
+         {
+         std::string def = *di;
+         ++di;
+         std::string val;
+         if (di != defs.end())
+           {
+           val = *di;
+           ++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=\"" << this->EscapeForXML(val)
+                << "\"/>\n";
+           }
+         }
+       }
+     }
  
    // include dirs



More information about the Cmake-commits mailing list