mirror of
https://github.com/Kitware/CMake.git
synced 2026-04-28 01:49:23 -05:00
Autogen: Add AUTOGEN_USE_SYSTEM_INCLUDE target property
`AUTOGEN_USE_SYSTEM_INCLUDE` was added. `AUTOGEN_USE_SYSTEM_INCLUDE` is a boolean property that can be set on a target to indicate that the autogen target include directory should be added as a system include directory or normal include directory to the target.
This commit is contained in:
committed by
Brad King
parent
8ba16db163
commit
033dc7ee2f
@@ -731,6 +731,29 @@ void cmGeneratorTarget::AddIncludeDirectory(const std::string& src,
|
||||
BT<std::string>(src, this->Makefile->GetBacktrace()), true));
|
||||
}
|
||||
|
||||
void cmGeneratorTarget::AddSystemIncludeDirectory(std::string const& inc,
|
||||
std::string const& lang)
|
||||
{
|
||||
std::string config_upper;
|
||||
auto const& configs =
|
||||
this->Makefile->GetGeneratorConfigs(cmMakefile::IncludeEmptyConfig);
|
||||
|
||||
for (auto const& config : configs) {
|
||||
std::string inc_with_config = inc;
|
||||
if (!config.empty()) {
|
||||
cmSystemTools::ReplaceString(inc_with_config, "$<CONFIG>", config);
|
||||
config_upper = cmSystemTools::UpperCase(config);
|
||||
}
|
||||
auto const& key = cmStrCat(config_upper, "/", lang);
|
||||
this->Target->AddSystemIncludeDirectories({ inc_with_config });
|
||||
this->SystemIncludesCache[key].emplace_back(inc_with_config);
|
||||
|
||||
// SystemIncludesCache should be sorted so that binary search can be used
|
||||
std::sort(this->SystemIncludesCache[key].begin(),
|
||||
this->SystemIncludesCache[key].end());
|
||||
}
|
||||
}
|
||||
|
||||
std::vector<cmSourceFile*> const* cmGeneratorTarget::GetSourceDepends(
|
||||
cmSourceFile const* sf) const
|
||||
{
|
||||
|
||||
@@ -912,6 +912,8 @@ public:
|
||||
std::vector<std::string> GetGeneratedISPCObjects(
|
||||
std::string const& config) const;
|
||||
|
||||
void AddSystemIncludeDirectory(std::string const& inc,
|
||||
std::string const& lang);
|
||||
bool AddHeaderSetVerification();
|
||||
std::string GenerateHeaderSetVerificationFile(
|
||||
cmSourceFile& source, const std::string& dir,
|
||||
|
||||
@@ -576,7 +576,20 @@ bool cmQtAutoGenInitializer::InitCustomTargets()
|
||||
|
||||
// Add autogen include directory to the origin target INCLUDE_DIRECTORIES
|
||||
if (this->MocOrUicEnabled() || (this->Rcc.Enabled && this->MultiConfig)) {
|
||||
this->GenTarget->AddIncludeDirectory(this->Dir.IncludeGenExp, true);
|
||||
auto addBefore = false;
|
||||
auto const& value =
|
||||
this->GenTarget->GetProperty("AUTOGEN_USE_SYSTEM_INCLUDE");
|
||||
if (value.IsSet()) {
|
||||
if (cmIsOn(value)) {
|
||||
this->GenTarget->AddSystemIncludeDirectory(this->Dir.IncludeGenExp,
|
||||
"CXX");
|
||||
} else {
|
||||
addBefore = true;
|
||||
}
|
||||
} else {
|
||||
addBefore = true;
|
||||
}
|
||||
this->GenTarget->AddIncludeDirectory(this->Dir.IncludeGenExp, addBefore);
|
||||
}
|
||||
|
||||
// Scan files
|
||||
|
||||
@@ -546,6 +546,7 @@ TargetProperty const StaticTargetProperties[] = {
|
||||
// -- Autogen
|
||||
{ "AUTOGEN_ORIGIN_DEPENDS"_s, IC::CanCompileSources },
|
||||
{ "AUTOGEN_PARALLEL"_s, IC::CanCompileSources },
|
||||
{ "AUTOGEN_USE_SYSTEM_INCLUDE"_s, IC::CanCompileSources },
|
||||
// -- moc
|
||||
{ "AUTOMOC_DEPEND_FILTERS"_s, IC::CanCompileSources },
|
||||
// -- C++
|
||||
|
||||
Reference in New Issue
Block a user