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

@@ -17,15 +17,6 @@ bool cmTargetCompileDefinitionsCommand::InitialPass(
return this->HandleArguments(args, "COMPILE_DEFINITIONS");
}
void cmTargetCompileDefinitionsCommand::HandleImportedTarget(
const std::string& tgt)
{
std::ostringstream e;
e << "Cannot specify compile definitions for imported target \"" << tgt
<< "\".";
this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str());
}
void cmTargetCompileDefinitionsCommand::HandleMissingTarget(
const std::string& name)
{
@@ -56,5 +47,5 @@ bool cmTargetCompileDefinitionsCommand::HandleDirectContent(
cmTarget* tgt, const std::vector<std::string>& content, bool, bool)
{
tgt->AppendProperty("COMPILE_DEFINITIONS", this->Join(content).c_str());
return true;
return true; // Successfully handled.
}