BUG: Use new include dir suppresson for all gens
This fixes CMAKE_<LANG>_IMPLICIT_INCLUDE_DIRECTORIES to be used for all generators instead of just those that construct their own compiler command lines directly. See issue #8598.
This commit is contained in:
parent
3498a8c668
commit
8c3290b4a3
@ -1187,25 +1187,9 @@ const char* cmLocalGenerator::GetIncludeFlags(const char* lang)
|
|||||||
return this->LanguageToIncludeFlags[lang].c_str();
|
return this->LanguageToIncludeFlags[lang].c_str();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load implicit include directories for this language.
|
|
||||||
std::set<cmStdString> impDirs;
|
|
||||||
std::string impDirVar = "CMAKE_";
|
|
||||||
impDirVar += lang;
|
|
||||||
impDirVar += "_IMPLICIT_INCLUDE_DIRECTORIES";
|
|
||||||
if(const char* value = this->Makefile->GetDefinition(impDirVar.c_str()))
|
|
||||||
{
|
|
||||||
std::vector<std::string> impDirVec;
|
|
||||||
cmSystemTools::ExpandListArgument(value, impDirVec);
|
|
||||||
for(std::vector<std::string>::const_iterator i = impDirVec.begin();
|
|
||||||
i != impDirVec.end(); ++i)
|
|
||||||
{
|
|
||||||
impDirs.insert(*i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
cmOStringStream includeFlags;
|
cmOStringStream includeFlags;
|
||||||
std::vector<std::string> includes;
|
std::vector<std::string> includes;
|
||||||
this->GetIncludeDirectories(includes);
|
this->GetIncludeDirectories(includes, lang);
|
||||||
std::vector<std::string>::iterator i;
|
std::vector<std::string>::iterator i;
|
||||||
|
|
||||||
std::string flagVar = "CMAKE_INCLUDE_FLAG_";
|
std::string flagVar = "CMAKE_INCLUDE_FLAG_";
|
||||||
@ -1250,11 +1234,6 @@ const char* cmLocalGenerator::GetIncludeFlags(const char* lang)
|
|||||||
#endif
|
#endif
|
||||||
for(i = includes.begin(); i != includes.end(); ++i)
|
for(i = includes.begin(); i != includes.end(); ++i)
|
||||||
{
|
{
|
||||||
// Skip implicit include directories.
|
|
||||||
if(impDirs.find(*i) != impDirs.end())
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
if(cmSystemTools::IsPathToFramework(i->c_str()))
|
if(cmSystemTools::IsPathToFramework(i->c_str()))
|
||||||
{
|
{
|
||||||
@ -1315,7 +1294,8 @@ const char* cmLocalGenerator::GetIncludeFlags(const char* lang)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void cmLocalGenerator::GetIncludeDirectories(std::vector<std::string>& dirs)
|
void cmLocalGenerator::GetIncludeDirectories(std::vector<std::string>& dirs,
|
||||||
|
const char* lang)
|
||||||
{
|
{
|
||||||
// Need to decide whether to automatically include the source and
|
// Need to decide whether to automatically include the source and
|
||||||
// binary directories at the beginning of the include path.
|
// binary directories at the beginning of the include path.
|
||||||
@ -1381,6 +1361,21 @@ void cmLocalGenerator::GetIncludeDirectories(std::vector<std::string>& dirs)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Load implicit include directories for this language.
|
||||||
|
std::string impDirVar = "CMAKE_";
|
||||||
|
impDirVar += lang;
|
||||||
|
impDirVar += "_IMPLICIT_INCLUDE_DIRECTORIES";
|
||||||
|
if(const char* value = this->Makefile->GetDefinition(impDirVar.c_str()))
|
||||||
|
{
|
||||||
|
std::vector<std::string> impDirVec;
|
||||||
|
cmSystemTools::ExpandListArgument(value, impDirVec);
|
||||||
|
for(std::vector<std::string>::const_iterator i = impDirVec.begin();
|
||||||
|
i != impDirVec.end(); ++i)
|
||||||
|
{
|
||||||
|
emitted.insert(*i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Get the project-specified include directories.
|
// Get the project-specified include directories.
|
||||||
std::vector<std::string>& includes =
|
std::vector<std::string>& includes =
|
||||||
this->Makefile->GetIncludeDirectories();
|
this->Makefile->GetIncludeDirectories();
|
||||||
|
@ -189,7 +189,8 @@ public:
|
|||||||
{ return true; }
|
{ return true; }
|
||||||
|
|
||||||
/** Get the include flags for the current makefile and language. */
|
/** Get the include flags for the current makefile and language. */
|
||||||
void GetIncludeDirectories(std::vector<std::string>& dirs);
|
void GetIncludeDirectories(std::vector<std::string>& dirs,
|
||||||
|
const char* lang = "C");
|
||||||
|
|
||||||
/** Compute the language used to compile the given source file. */
|
/** Compute the language used to compile the given source file. */
|
||||||
const char* GetSourceFileLanguage(const cmSourceFile& source);
|
const char* GetSourceFileLanguage(const cmSourceFile& source);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user