Xcode: Properly mark SYSTEM includes as such

We now populate the per-language flags in addition to the header
search paths stored in HEADER_SEARCH_PATHS. This preserves include
paths for GNU assembly files (cmake/cmake#16449) and also provides
SYSTEM include semantics.

Closes: cmake/cmake#15687
This commit is contained in:
Gregor Jasny
2016-12-27 22:18:30 +01:00
parent 65fb0fa632
commit 88f07fb417
3 changed files with 30 additions and 5 deletions
+16
View File
@@ -1977,6 +1977,22 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt,
buildSettings->AddAttribute("HEADER_SEARCH_PATHS", dirs.CreateList());
}
if (this->XcodeVersion >= 60) {
// Add those per-language flags in addition to HEADER_SEARCH_PATHS to gain
// system include directory awareness. We need to also keep on setting
// HEADER_SEARCH_PATHS to work around a missing compile options flag for
// GNU assembly files (#16449)
for (std::set<std::string>::iterator li = languages.begin();
li != languages.end(); ++li) {
std::string includeFlags = this->CurrentLocalGenerator->GetIncludeFlags(
includes, gtgt, *li, true, false, configName);
if (!includeFlags.empty()) {
cflags[*li] += " " + includeFlags;
}
}
}
bool same_gflags = true;
std::map<std::string, std::string> gflags;
std::string const* last_gflag = 0;