Split LINK_INTERFACE_LIBRARIES export handling into dedicated method.

This commit is contained in:
Stephen Kelly 2013-01-04 15:58:16 +01:00
parent a3aedb8152
commit 94aeaf72c7
4 changed files with 33 additions and 3 deletions

View File

@ -107,6 +107,10 @@ cmExportBuildFileGenerator
std::vector<std::string> missingTargets; std::vector<std::string> missingTargets;
this->SetImportDetailProperties(config, suffix, this->SetImportDetailProperties(config, suffix,
target, properties, missingTargets); target, properties, missingTargets);
this->SetImportLinkInterface(config, suffix,
cmGeneratorExpression::BuildInterface,
target, properties, missingTargets);
// TOOD: PUBLIC_HEADER_LOCATION // TOOD: PUBLIC_HEADER_LOCATION
// This should wait until the build feature propagation stuff // This should wait until the build feature propagation stuff

View File

@ -344,6 +344,26 @@ cmExportFileGenerator::ResolveTargetsInGeneratorExpression(
} }
} }
//----------------------------------------------------------------------------
void
cmExportFileGenerator
::SetImportLinkInterface(const char* config, std::string const& suffix,
cmGeneratorExpression::PreprocessContext preprocessRule,
cmTarget* target, ImportPropertyMap& properties,
std::vector<std::string>& missingTargets)
{
// Add the transitive link dependencies for this configuration.
cmTarget::LinkInterface const* iface = target->GetLinkInterface(config,
target);
if (!iface)
{
return;
}
this->SetImportLinkProperty(suffix, target,
"IMPORTED_LINK_INTERFACE_LIBRARIES",
iface->Libraries, properties, missingTargets);
}
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
void void
cmExportFileGenerator cmExportFileGenerator
@ -388,9 +408,7 @@ cmExportFileGenerator
this->SetImportLinkProperty(suffix, target, this->SetImportLinkProperty(suffix, target,
"IMPORTED_LINK_INTERFACE_LANGUAGES", "IMPORTED_LINK_INTERFACE_LANGUAGES",
iface->Languages, properties, missingTargets); iface->Languages, properties, missingTargets);
this->SetImportLinkProperty(suffix, target,
"IMPORTED_LINK_INTERFACE_LIBRARIES",
iface->Libraries, properties, missingTargets);
this->SetImportLinkProperty(suffix, target, this->SetImportLinkProperty(suffix, target,
"IMPORTED_LINK_DEPENDENT_LIBRARIES", "IMPORTED_LINK_DEPENDENT_LIBRARIES",
iface->SharedDeps, properties, missingTargets); iface->SharedDeps, properties, missingTargets);

View File

@ -102,6 +102,10 @@ protected:
void GenerateInterfaceProperties(cmTarget *target, std::ostream& os, void GenerateInterfaceProperties(cmTarget *target, std::ostream& os,
const ImportPropertyMap &properties); const ImportPropertyMap &properties);
void SetImportLinkInterface(const char* config, std::string const& suffix,
cmGeneratorExpression::PreprocessContext preprocessRule,
cmTarget* target, ImportPropertyMap& properties,
std::vector<std::string>& missingTargets);
enum FreeTargetsReplace { enum FreeTargetsReplace {
ReplaceFreeTargets, ReplaceFreeTargets,

View File

@ -229,6 +229,10 @@ cmExportInstallFileGenerator
this->SetImportDetailProperties(config, suffix, this->SetImportDetailProperties(config, suffix,
te->Target, properties, missingTargets); te->Target, properties, missingTargets);
this->SetImportLinkInterface(config, suffix,
cmGeneratorExpression::InstallInterface,
te->Target, properties, missingTargets);
// TOOD: PUBLIC_HEADER_LOCATION // TOOD: PUBLIC_HEADER_LOCATION
// This should wait until the build feature propagation stuff // This should wait until the build feature propagation stuff
// is done. Then this can be a propagated include directory. // is done. Then this can be a propagated include directory.