diff options
author | Stephen Kelly <steveire@gmail.com> | 2013-10-20 18:39:16 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2013-10-26 14:10:20 (GMT) |
commit | 239b0c6b0ed821fd012a2a980961b9a9d43793e5 (patch) | |
tree | 7b571325a3cb0112bf4965b5edd900dd0c7525c6 /Source/cmTargetLinkLibrariesCommand.cxx | |
parent | c515dc574879448d66e2c5a27b9807d95a27fefd (diff) | |
download | CMake-239b0c6b0ed821fd012a2a980961b9a9d43793e5.zip CMake-239b0c6b0ed821fd012a2a980961b9a9d43793e5.tar.gz CMake-239b0c6b0ed821fd012a2a980961b9a9d43793e5.tar.bz2 |
Don't add invalid content to static lib INTERFACE_LINK_LIBRARIES.
Only valid target names or generator expressions may appear in
the target field of a LINK_ONLY expression.
Other content like link flags should still be added to that property
(wrapped in config-specific generator expressions), but not wrapped
in LINK_ONLY. Otherwise undue warnings would be issued for the
policy CMP0022.
The LINK_ONLY expression only has an effect for actual target
names anyway, so there is no logical deficit.
Diffstat (limited to 'Source/cmTargetLinkLibrariesCommand.cxx')
-rw-r--r-- | Source/cmTargetLinkLibrariesCommand.cxx | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/Source/cmTargetLinkLibrariesCommand.cxx b/Source/cmTargetLinkLibrariesCommand.cxx index 863b391..6030a44 100644 --- a/Source/cmTargetLinkLibrariesCommand.cxx +++ b/Source/cmTargetLinkLibrariesCommand.cxx @@ -384,10 +384,15 @@ cmTargetLinkLibrariesCommand::HandleLibrary(const char* lib, { if (this->Target->GetType() == cmTarget::STATIC_LIBRARY) { + std::string configLib = this->Target + ->GetDebugGeneratorExpressions(lib, llt); + if (cmGeneratorExpression::IsValidTargetName(lib) + || cmGeneratorExpression::Find(lib) != std::string::npos) + { + configLib = "$<LINK_ONLY:" + configLib + ">"; + } this->Target->AppendProperty("INTERFACE_LINK_LIBRARIES", - ("$<LINK_ONLY:" + - this->Target->GetDebugGeneratorExpressions(lib, llt) + - ">").c_str()); + configLib.c_str()); } // Not a 'public' or 'interface' library. Do not add to interface // property. |