mirror of
https://github.com/reactos/CMake.git
synced 2025-02-07 20:38:49 +00:00
LINK_DEPENDS: add support of 'generator expressions'
This commit is contained in:
parent
cc9f88af53
commit
724bd7790e
@ -10,3 +10,8 @@ linked if any of the named files is newer than it.
|
||||
This property is supported only by Makefile and Ninja generators. It is
|
||||
intended to specify dependencies on "linker scripts" for custom Makefile link
|
||||
rules.
|
||||
|
||||
Contents of ``LINK_DEPENDS`` may use "generator expressions" with
|
||||
the syntax ``$<...>``. See the :manual:`cmake-generator-expressions(7)`
|
||||
manual for available expressions. See the :manual:`cmake-buildsystem(7)`
|
||||
manual for more on defining buildsystem properties.
|
||||
|
5
Help/release/dev/LINK_DEPENDS-property.rst
Normal file
5
Help/release/dev/LINK_DEPENDS-property.rst
Normal file
@ -0,0 +1,5 @@
|
||||
LINK_DEPENDS-property
|
||||
---------------------
|
||||
|
||||
* The :prop_tgt:`LINK_DEPENDS` target property learned to support
|
||||
:manual:`generator expressions <cmake-generator-expressions(7)>`.
|
@ -3027,15 +3027,21 @@ void cmGeneratorTarget::GetLinkDepends(std::vector<std::string>& result,
|
||||
const std::string& config,
|
||||
const std::string& language) const
|
||||
{
|
||||
if (const char* linkDepends = this->GetProperty("LINK_DEPENDS")) {
|
||||
cmSystemTools::ExpandListArgument(linkDepends, result);
|
||||
}
|
||||
|
||||
std::unordered_set<std::string> uniqueOptions;
|
||||
std::vector<cmGeneratorTarget::TargetPropertyEntry*> linkDependsEntries;
|
||||
std::unordered_set<std::string> uniqueOptions;
|
||||
cmGeneratorExpressionDAGChecker dagChecker(this->GetName(), "LINK_DEPENDS",
|
||||
nullptr, nullptr);
|
||||
|
||||
if (const char* linkDepends = this->GetProperty("LINK_DEPENDS")) {
|
||||
std::vector<std::string> depends;
|
||||
cmGeneratorExpression ge;
|
||||
cmSystemTools::ExpandListArgument(linkDepends, depends);
|
||||
for (const auto& depend : depends) {
|
||||
std::unique_ptr<cmCompiledGeneratorExpression> cge = ge.Parse(depend);
|
||||
linkDependsEntries.push_back(
|
||||
new cmGeneratorTarget::TargetPropertyEntry(std::move(cge)));
|
||||
}
|
||||
}
|
||||
AddInterfaceEntries(this, config, "INTERFACE_LINK_DEPENDS",
|
||||
linkDependsEntries);
|
||||
processLinkDepends(this, linkDependsEntries, result, uniqueOptions,
|
||||
|
@ -106,7 +106,7 @@ set_property(
|
||||
|
||||
if(TEST_LINK_DEPENDS)
|
||||
add_executable(linkdep linkdep.cxx)
|
||||
set_property(TARGET linkdep PROPERTY LINK_DEPENDS ${TEST_LINK_DEPENDS})
|
||||
set_property(TARGET linkdep PROPERTY LINK_DEPENDS $<1:${TEST_LINK_DEPENDS}>)
|
||||
|
||||
add_library(foo_interface INTERFACE)
|
||||
set_property(TARGET foo_interface PROPERTY INTERFACE_LINK_DEPENDS $<1:${TEST_LINK_DEPENDS}>)
|
||||
|
Loading…
x
Reference in New Issue
Block a user