不传播使用要求

时间:2014-11-24 07:59:04

标签: cmake

是否可以link against a library定义usage requirements,但不能使用它们?

1 个答案:

答案 0 :(得分:0)

CMake定义了一种速记方式,以满足下游中导出的目标上游定义的所有使用要求

target_link_library(Downstream Upstream)

与此同时,可以单独提取目标属性,并根据需要单独使用它们。

Stricto-sensu," link-against"是一个使用要求,所以我假设你想要控制哪个要求满足,哪个不要满足。

如果要链接库上游,则需要链接目标INTERFACE_LINK_LIBRARY属性中定义的库。您可以使用以下代码提取EXPORTED目标的链接要求,即使它是EXPORTED

add_library(Downstream mylibrary.cpp) #Creates the Downstream library

# Extract Upstream's link interface
get_property(extracted_libraries TARGET Upstream PROPERTY INTERFACE_LINK_LIBRARIES)
# And link Downstream against it
target_link_library(Downstream extracted_libraries)