diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index a3b48b3a8..95eb666c5 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -1096,7 +1096,8 @@ const char* cmLocalGenerator::GetIncludeFlags(const char* lang) } //---------------------------------------------------------------------------- -void cmLocalGenerator::GetIncludeDirectories(std::vector& dirs) +void cmLocalGenerator::GetIncludeDirectories(std::vector& dirs, + bool filter_system_dirs) { // Need to decide whether to automatically include the source and // binary directories at the beginning of the include path. @@ -1170,18 +1171,21 @@ void cmLocalGenerator::GetIncludeDirectories(std::vector& dirs) } } - // Do not explicitly add the standard include path "/usr/include". - // This can cause problems with certain standard library - // implementations because the wrong headers may be found first. - emitted.insert("/usr/include"); - if(const char* implicitIncludes = this->Makefile->GetDefinition - ("CMAKE_PLATFORM_IMPLICIT_INCLUDE_DIRECTORIES")) + if(filter_system_dirs) { - std::vector implicitIncludeVec; - cmSystemTools::ExpandListArgument(implicitIncludes, implicitIncludeVec); - for(unsigned int k = 0; k < implicitIncludeVec.size(); ++k) + // Do not explicitly add the standard include path "/usr/include". + // This can cause problems with certain standard library + // implementations because the wrong headers may be found first. + emitted.insert("/usr/include"); + if(const char* implicitIncludes = this->Makefile->GetDefinition + ("CMAKE_PLATFORM_IMPLICIT_INCLUDE_DIRECTORIES")) { - emitted.insert(implicitIncludeVec[k]); + std::vector implicitIncludeVec; + cmSystemTools::ExpandListArgument(implicitIncludes, implicitIncludeVec); + for(unsigned int k = 0; k < implicitIncludeVec.size(); ++k) + { + emitted.insert(implicitIncludeVec[k]); + } } } diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index 1f273b9f6..66b47e563 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -170,7 +170,8 @@ public: std::vector* fullPathLibs=0); /** Get the include flags for the current makefile and language. */ - void GetIncludeDirectories(std::vector& dirs); + void GetIncludeDirectories(std::vector& dirs, + bool filter_system_dirs = true); /** Compute the language used to compile the given source file. */ const char* GetSourceFileLanguage(const cmSourceFile& source); diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index 2eac5ab3c..a0ff5dcc0 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -467,7 +467,7 @@ void cmLocalUnixMakefileGenerator3::WriteDirectoryInformationFile() infoFileStream << "SET(CMAKE_C_INCLUDE_PATH\n"; std::vector includeDirs; - this->GetIncludeDirectories(includeDirs); + this->GetIncludeDirectories(includeDirs, false); for(std::vector::iterator i = includeDirs.begin(); i != includeDirs.end(); ++i) {