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.
This commit is contained in:
parent
9822f8c931
commit
1da75022bb
|
@ -2232,6 +2232,14 @@ static std::string targetNameGenex(const char *lib)
|
||||||
return std::string("$<TARGET_NAME:") + lib + ">";
|
return std::string("$<TARGET_NAME:") + 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,
|
void cmTarget::AddLinkLibrary(cmMakefile& mf,
|
||||||
const char *target, const char* lib,
|
const char *target, const char* lib,
|
||||||
|
@ -2254,6 +2262,11 @@ void cmTarget::AddLinkLibrary(cmMakefile& mf,
|
||||||
llt).c_str());
|
llt).c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isGeneratorExpression(lib))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
cmTarget::LibraryID tmp;
|
cmTarget::LibraryID tmp;
|
||||||
tmp.first = lib;
|
tmp.first = lib;
|
||||||
tmp.second = llt;
|
tmp.second = llt;
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
#define cmTargetLinkLibrariesCommand_h
|
#define cmTargetLinkLibrariesCommand_h
|
||||||
|
|
||||||
#include "cmCommand.h"
|
#include "cmCommand.h"
|
||||||
|
#include "cmDocumentGeneratorExpressions.h"
|
||||||
|
|
||||||
/** \class cmTargetLinkLibrariesCommand
|
/** \class cmTargetLinkLibrariesCommand
|
||||||
* \brief Specify a list of libraries to link into executables.
|
* \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 "
|
"However, if two archives are really so interdependent they should "
|
||||||
"probably be combined into a single archive."
|
"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
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue