mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-01 03:29:18 -05:00
TLL: Don't populate old link interface if CMP0022 is NEW.
Always populate the INTERFACE_LINK_LIBRARIES for interface entries. Don't populate the old interface properties matching (IMPORTED_)?LINK_INTERFACE_LIBRARIES(_<CONFIG>)? if CMP0022 is NEW. Because the INTERFACE_LINK_LIBRARIES property is now populated by the target_link_libraries when operating on a static library, make an equivalent change which populates the property with the same value when the old link_libraries() command is used. This silences the policy warning in that case.
This commit is contained in:
@@ -224,12 +224,17 @@ bool cmTargetLinkLibrariesCommand
|
||||
cmSystemTools::SetFatalErrorOccured();
|
||||
}
|
||||
|
||||
const cmPolicies::PolicyStatus policy22Status
|
||||
= this->Target->GetPolicyStatusCMP0022();
|
||||
|
||||
// If any of the LINK_ options were given, make sure the
|
||||
// LINK_INTERFACE_LIBRARIES target property exists.
|
||||
// Use of any of the new keywords implies awareness of
|
||||
// this property. And if no libraries are named, it should
|
||||
// result in an empty link interface.
|
||||
if(this->CurrentProcessingState != ProcessingLinkLibraries &&
|
||||
if((policy22Status == cmPolicies::OLD ||
|
||||
policy22Status == cmPolicies::WARN) &&
|
||||
this->CurrentProcessingState != ProcessingLinkLibraries &&
|
||||
!this->Target->GetProperty("LINK_INTERFACE_LIBRARIES"))
|
||||
{
|
||||
this->Target->SetProperty("LINK_INTERFACE_LIBRARIES", "");
|
||||
@@ -263,11 +268,30 @@ cmTargetLinkLibrariesCommand::HandleLibrary(const char* lib,
|
||||
->AddLinkLibraryForTarget(this->Target->GetName(), lib, llt);
|
||||
if (this->CurrentProcessingState != ProcessingPublicInterface)
|
||||
{
|
||||
if (this->Target->GetType() == cmTarget::STATIC_LIBRARY)
|
||||
{
|
||||
this->Target->AppendProperty("INTERFACE_LINK_LIBRARIES",
|
||||
("$<LINK_ONLY:" +
|
||||
this->Target->GetDebugGeneratorExpressions(lib, llt) +
|
||||
">").c_str());
|
||||
}
|
||||
// Not LINK_INTERFACE_LIBRARIES or LINK_PUBLIC, do not add to interface.
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
this->Target->AppendProperty("INTERFACE_LINK_LIBRARIES",
|
||||
this->Target->GetDebugGeneratorExpressions(lib, llt).c_str());
|
||||
|
||||
const cmPolicies::PolicyStatus policy22Status
|
||||
= this->Target->GetPolicyStatusCMP0022();
|
||||
|
||||
if (policy22Status != cmPolicies::OLD
|
||||
&& policy22Status != cmPolicies::WARN)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Get the list of configurations considered to be DEBUG.
|
||||
std::vector<std::string> const& debugConfigs =
|
||||
this->Makefile->GetCMakeInstance()->GetDebugConfigs();
|
||||
|
||||
Reference in New Issue
Block a user