summaryrefslogtreecommitdiffstats
path: root/Source/cmTargetLinkLibrariesCommand.cxx
diff options
context:
space:
mode:
authorStephen Kelly <steveire@gmail.com>2012-11-26 11:30:00 (GMT)
committerStephen Kelly <steveire@gmail.com>2013-01-08 17:58:18 (GMT)
commit9cfe4f1b769597bd9ba179eba46572a9df27f64c (patch)
tree8b742d1a7064d31bc9e9add371798d1cfaf086ca /Source/cmTargetLinkLibrariesCommand.cxx
parent97758f29206a172524edd144e588558bb4a83700 (diff)
downloadCMake-9cfe4f1b769597bd9ba179eba46572a9df27f64c.zip
CMake-9cfe4f1b769597bd9ba179eba46572a9df27f64c.tar.gz
CMake-9cfe4f1b769597bd9ba179eba46572a9df27f64c.tar.bz2
Allow target_link_libraries with IMPORTED targets.
This makes it possible to use: target_link_libraries(foo LINK_INTERFACE_LIBRARIES bar) where foo is an IMPORTED target. Other tll() signatures are not allowed.
Diffstat (limited to 'Source/cmTargetLinkLibrariesCommand.cxx')
-rw-r--r--Source/cmTargetLinkLibrariesCommand.cxx14
1 files changed, 14 insertions, 0 deletions
diff --git a/Source/cmTargetLinkLibrariesCommand.cxx b/Source/cmTargetLinkLibrariesCommand.cxx
index f42b0f6..0705fb4 100644
--- a/Source/cmTargetLinkLibrariesCommand.cxx
+++ b/Source/cmTargetLinkLibrariesCommand.cxx
@@ -35,6 +35,10 @@ bool cmTargetLinkLibrariesCommand
->GetGlobalGenerator()->FindTarget(0, args[0].c_str());
if(!this->Target)
{
+ this->Target = this->Makefile->FindTargetToUse(args[0].c_str());
+ }
+ if(!this->Target)
+ {
cmake::MessageType t = cmake::FATAL_ERROR; // fail by default
cmOStringStream e;
e << "Cannot specify link libraries for target \"" << args[0] << "\" "
@@ -257,6 +261,16 @@ cmTargetLinkLibrariesCommand::HandleLibrary(const char* lib,
// Handle normal case first.
if(this->CurrentProcessingState != ProcessingLinkInterface)
{
+ if (this->Target->IsImported())
+ {
+ cmOStringStream e;
+ e << "Imported targets may only be used with the "
+ "LINK_INTERFACE_LIBRARIES specifier to target_link_libraries.";
+ this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str());
+ return;
+ }
+
+
this->Makefile
->AddLinkLibraryForTarget(this->Target->GetName(), lib, llt);
if (this->CurrentProcessingState != ProcessingPublicInterface)