BUG: fix for bug 116 platform files can now specify directories that should not be added by CMAKE

This commit is contained in:
Bill Hoffman 2004-04-28 13:21:56 -04:00
parent e539cf9f7c
commit a6b60841db
2 changed files with 16 additions and 1 deletions

View File

@ -25,3 +25,5 @@ SET(CMAKE_C_CREATE_SHARED_MODULE
"<CMAKE_C_COMPILER> <CMAKE_SHARED_MODULE_CREATE_C_FLAGS> <LINK_FLAGS> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>")
INCLUDE(${CMAKE_ROOT}/Modules/Platform/gcc.cmake)
SET(CMAKE_PLATFORM_IMPLICIT_INCLUDE_DIRECTORIES /usr/local/include)

View File

@ -2487,13 +2487,26 @@ void cmLocalUnixMakefileGenerator::OutputMakeVariables(std::ostream& fout)
std::vector<std::string>::iterator i;
fout << "-I" <<
this->ConvertToOutputForExisting(m_Makefile->GetStartDirectory()) << " ";
std::map<cmStdString, cmStdString> implicitIncludes;
implicitIncludes["/usr/include"] = "/usr/include";
if(m_Makefile->GetDefinition("CMAKE_PLATFORM_IMPLICIT_INCLUDE_DIRECTORIES"))
{
std::string arg = m_Makefile->GetDefinition("CMAKE_PLATFORM_IMPLICIT_INCLUDE_DIRECTORIES");
std::vector<std::string> implicitIncludeVec;
cmSystemTools::ExpandListArgument(arg, implicitIncludeVec);
for(int k =0; k < implicitIncludeVec.size(); k++)
{
implicitIncludes[implicitIncludeVec[k]] = implicitIncludeVec[k];
}
}
for(i = includes.begin(); i != includes.end(); ++i)
{
std::string include = *i;
// Don't output a -I for the standard include path "/usr/include".
// This can cause problems with certain standard library
// implementations because the wrong headers may be found first.
if(include != "/usr/include")
if(implicitIncludes.find(include) == implicitIncludes.end())
{
fout << "-I" << this->ConvertToOutputForExisting(i->c_str()) << " ";
}