summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorStephen Kelly <steveire@gmail.com>2012-12-23 18:00:18 (GMT)
committerStephen Kelly <steveire@gmail.com>2013-01-13 08:59:42 (GMT)
commit1da75022bbe3239e028fe73d94dfae724ad25a7f (patch)
tree2436a13c2ba566f1895946d2dc50a3fdbf47aa19 /Source
parent9822f8c931c39b28a587cf48b5314431386d50ea (diff)
downloadCMake-1da75022bbe3239e028fe73d94dfae724ad25a7f.zip
CMake-1da75022bbe3239e028fe73d94dfae724ad25a7f.tar.gz
CMake-1da75022bbe3239e028fe73d94dfae724ad25a7f.tar.bz2
Don't include generator expressions in old-style link handling.
Don't add generator expressions to variables which are used for CMP0003, CMP0004, and the old-style _LIB_DEPENDS content. They will not be evaluated when read anyway and would probably confuse the code reading them. This makes it legitimate to use target_link_libraries with generator expressions as arguments.
Diffstat (limited to 'Source')
-rw-r--r--Source/cmTarget.cxx13
-rw-r--r--Source/cmTargetLinkLibrariesCommand.h7
2 files changed, 20 insertions, 0 deletions
diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx
index 9b50b8e..51512de 100644
--- a/Source/cmTarget.cxx
+++ b/Source/cmTarget.cxx
@@ -2233,6 +2233,14 @@ static std::string targetNameGenex(const char *lib)
}
//----------------------------------------------------------------------------
+static bool isGeneratorExpression(const std::string &lib)
+{
+ const std::string::size_type openpos = lib.find("$<");
+ return (openpos != std::string::npos)
+ && (lib.find(">", openpos) != std::string::npos);
+}
+
+//----------------------------------------------------------------------------
void cmTarget::AddLinkLibrary(cmMakefile& mf,
const char *target, const char* lib,
LinkLibraryType llt)
@@ -2254,6 +2262,11 @@ void cmTarget::AddLinkLibrary(cmMakefile& mf,
llt).c_str());
}
+ if (isGeneratorExpression(lib))
+ {
+ return;
+ }
+
cmTarget::LibraryID tmp;
tmp.first = lib;
tmp.second = llt;
diff --git a/Source/cmTargetLinkLibrariesCommand.h b/Source/cmTargetLinkLibrariesCommand.h
index 8e5823c..34fe54c 100644
--- a/Source/cmTargetLinkLibrariesCommand.h
+++ b/Source/cmTargetLinkLibrariesCommand.h
@@ -13,6 +13,7 @@
#define cmTargetLinkLibrariesCommand_h
#include "cmCommand.h"
+#include "cmDocumentGeneratorExpressions.h"
/** \class cmTargetLinkLibrariesCommand
* \brief Specify a list of libraries to link into executables.
@@ -141,6 +142,12 @@ public:
"However, if two archives are really so interdependent they should "
"probably be combined into a single archive."
")"
+ "\n"
+ "Arguments to target_link_libraries may use \"generator expressions\" "
+ "with the syntax \"$<...>\". Note however, that generator expressions "
+ "will not be used in OLD handling of CMP0003 or CMP0004."
+ "\n"
+ CM_DOCUMENT_COMMAND_GENERATOR_EXPRESSIONS
;
}