[Cmake-commits] [cmake-commits] alex committed cmExtraEclipseCDT4Generator.h 1.8 1.9 cmExtraEclipseCDT4Generator.cxx 1.22 1.23

cmake-commits at cmake.org cmake-commits at cmake.org
Fri Mar 13 16:53:00 EDT 2009


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

Modified Files:
	cmExtraEclipseCDT4Generator.h cmExtraEclipseCDT4Generator.cxx 
Log Message:
ENH: when using the Eclipse project generator, run gcc so that it tells us
its system include directories. These are catched in CMakeSystemSpecificInformation.cmake 
(only with the Eclipse generator) and then written by the Eclipse generator
in the Eclipse project file. This way Eclipse can find the standard headers
(#7585)
Not sure CMakeSystemSpecificInformation.cmake is the best place to do this.

Alex


Index: cmExtraEclipseCDT4Generator.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmExtraEclipseCDT4Generator.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -C 2 -d -r1.8 -r1.9
*** cmExtraEclipseCDT4Generator.h	11 Jan 2009 17:18:44 -0000	1.8
--- cmExtraEclipseCDT4Generator.h	13 Mar 2009 20:52:58 -0000	1.9
***************
*** 112,115 ****
--- 112,119 ----
                                 const std::string&     altdefname);
  
+   static void AppendIncludeDirectories(cmGeneratedFileStream& fout,
+                                    const std::vector<std::string>& includeDirs,
+                                    std::set<std::string>& emittedDirs);
+ 
    std::vector<std::string> SrcLinkedResources;
    std::vector<std::string> OutLinkedResources;

Index: cmExtraEclipseCDT4Generator.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmExtraEclipseCDT4Generator.cxx,v
retrieving revision 1.22
retrieving revision 1.23
diff -C 2 -d -r1.22 -r1.23
*** cmExtraEclipseCDT4Generator.cxx	14 Jan 2009 14:51:58 -0000	1.22
--- cmExtraEclipseCDT4Generator.cxx	13 Mar 2009 20:52:58 -0000	1.23
***************
*** 396,399 ****
--- 396,423 ----
  
  //----------------------------------------------------------------------------
+ void cmExtraEclipseCDT4Generator::AppendIncludeDirectories(
+                             cmGeneratedFileStream& fout,
+                             const std::vector<std::string>& includeDirs,
+                             std::set<std::string>& emittedDirs)
+ {
+   for(std::vector<std::string>::const_iterator inc = includeDirs.begin();
+       inc != includeDirs.end();
+       ++inc)
+     {
+     if (!inc->empty())
+       {
+       std::string dir = cmSystemTools::CollapseFullPath(inc->c_str());
+       if(emittedDirs.find(dir) == emittedDirs.end())
+         {
+         emittedDirs.insert(dir);
+         fout << "<pathentry include=\"" 
+              << cmExtraEclipseCDT4Generator::GetEclipsePath(dir)
+              << "\" kind=\"inc\" path=\"\" system=\"true\"/>\n";
+         }
+       }
+     }
+ }
+ 
+ //----------------------------------------------------------------------------
  void cmExtraEclipseCDT4Generator::CreateCProjectFile() const
  {
***************
*** 591,607 ****
      const std::vector<std::string>& includeDirs
        = (*it)->GetMakefile()->GetIncludeDirectories();
!     for(std::vector<std::string>::const_iterator inc = includeDirs.begin();
!         inc != includeDirs.end();
!         ++inc)
!       {
!       std::string dir = cmSystemTools::CollapseFullPath(inc->c_str());
!       if(emmited.find(dir) == emmited.end())
!         {
!         emmited.insert(dir);
!         fout << "<pathentry include=\"" << this->GetEclipsePath(dir)
!              << "\" kind=\"inc\" path=\"\" system=\"true\"/>\n";
!         }
!       }
      }
    fout << "</storageModule>\n";
  
--- 615,643 ----
      const std::vector<std::string>& includeDirs
        = (*it)->GetMakefile()->GetIncludeDirectories();
!     this->AppendIncludeDirectories(fout, includeDirs, emmited);
!     }
!   // now also the system include directories, in case we found them in 
!   // CMakeSystemSpecificInformation.cmake. This makes Eclipse find the 
!   // standard headers.
!   mf->GetDefinition("CMAKE_ECLIPSE_C_SYSTEM_INCLUDE_DIRS");
!   std::string compiler = mf->GetSafeDefinition("CMAKE_C_COMPILER");
!   if (!compiler.empty())
!     {
!     std::string systemIncludeDirs = mf->GetSafeDefinition(
!                                       "CMAKE_ECLIPSE_C_SYSTEM_INCLUDE_DIRS");
!     std::vector<std::string> dirs;
!     cmSystemTools::ExpandListArgument(systemIncludeDirs.c_str(), dirs);
!     this->AppendIncludeDirectories(fout, dirs, emmited);
      }
+   compiler = mf->GetSafeDefinition("CMAKE_CXX_COMPILER");
+   if (!compiler.empty())
+     {
+     std::string systemIncludeDirs = mf->GetSafeDefinition(
+                                       "CMAKE_ECLIPSE_CXX_SYSTEM_INCLUDE_DIRS");
+     std::vector<std::string> dirs;
+     cmSystemTools::ExpandListArgument(systemIncludeDirs.c_str(), dirs);
+     this->AppendIncludeDirectories(fout, dirs, emmited);
+     }
+ 
    fout << "</storageModule>\n";
  



More information about the Cmake-commits mailing list