Teach target_* commands to set INTERFACE properties of IMPORTED targets

Now, several `INTERFACE_*` properties can be set on `IMPORTED` targets,
not only via `set_property` and `set_target_properties` but also via
`target_compile_definitions`, `target_compile_features`,
`target_compile_options`, `target_include_directories`, `target_sources`
and `target_link_libraries`.

Fixes: #15689
Issue: #17197
This commit is contained in:
Deniz Bahadir
2017-09-18 17:50:11 +02:00
committed by Brad King
parent e40fd9fd19
commit fe4b25ec2f
28 changed files with 91 additions and 95 deletions

View File

@@ -84,17 +84,15 @@ bool cmTargetPropCommandBase::ProcessContentArgs(
this->SetError("called with invalid arguments");
return false;
}
if (this->Target->IsImported()) {
this->HandleImportedTarget(args[0]);
return false;
}
if (this->Target->GetType() == cmStateEnums::INTERFACE_LIBRARY &&
scope != "INTERFACE") {
this->SetError("may only set INTERFACE properties on INTERFACE targets");
return false;
}
if (this->Target->IsImported() && scope != "INTERFACE") {
this->SetError("may only set INTERFACE properties on IMPORTED targets");
return false;
}
++argIndex;