diff options
author | Brad King <brad.king@kitware.com> | 2020-01-14 18:14:55 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2020-01-16 18:24:27 (GMT) |
commit | f0e67da0615bd746626cab8e4dff2ba60c7aa2fe (patch) | |
tree | c27fb29e6b769cc5d501c42758ffd4c0892cec9a /Source/cmGeneratorTarget.h | |
parent | acee6291039537a176fef70820648fc3d8cb4fb0 (diff) | |
download | CMake-f0e67da0615bd746626cab8e4dff2ba60c7aa2fe.zip CMake-f0e67da0615bd746626cab8e4dff2ba60c7aa2fe.tar.gz CMake-f0e67da0615bd746626cab8e4dff2ba60c7aa2fe.tar.bz2 |
target_link_libraries: Fix out-of-dir linking of a list of targets
In a case like
target_link_libraries(targetInOtherDir PUBLIC "$<1:a;b>")
then all entries in the list need to be looked up in the caller's
scope. Previously our `::@(directory-id)` suffix would apply only
to the last entry. Instead surround the entire entry by a pair
`::@(directory-id);...;::@` so that the `::@` syntax can encode
a directory lookup scope change evaluated as the list is processed.
Fixes: #20204
Diffstat (limited to 'Source/cmGeneratorTarget.h')
-rw-r--r-- | Source/cmGeneratorTarget.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/Source/cmGeneratorTarget.h b/Source/cmGeneratorTarget.h index 0a72cbe..9d06104 100644 --- a/Source/cmGeneratorTarget.h +++ b/Source/cmGeneratorTarget.h @@ -378,9 +378,14 @@ public: cmGeneratorTarget* Target = nullptr; }; TargetOrString ResolveTargetReference(std::string const& name) const; + TargetOrString ResolveTargetReference(std::string const& name, + cmLocalGenerator const* lg) const; cmLinkItem ResolveLinkItem(std::string const& name, cmListFileBacktrace const& bt) const; + cmLinkItem ResolveLinkItem(std::string const& name, + cmListFileBacktrace const& bt, + cmLocalGenerator const* lg) const; // Compute the set of languages compiled by the target. This is // computed every time it is called because the languages can change @@ -919,6 +924,9 @@ private: std::unordered_set<std::string> UnityBatchedSourceFiles; + bool IsLinkLookupScope(std::string const& n, + cmLocalGenerator const*& lg) const; + void ExpandLinkItems(std::string const& prop, std::string const& value, std::string const& config, const cmGeneratorTarget* headTarget, |