2014-11-24 6 views
0

Возможно ли, что link against a library, что имеет usage requirements, определяет, но не использует их?Не распространять требования к использованию

+0

Возможно, но почему вы хотите? http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem – steveire

+0

Я думал о включении файлов с дублирующимися именами в библиотеке и вашей целевой. – Peter

+0

И как бы вы на самом деле справились с проблемой? Как бы какой-либо файл в вашем проекте решал, какой из двух он получит? Или ваша фактическая проблема с указанием правильного порядка включения для всех файлов в целевом? – steveire

ответ

0

CMake определяет сокращенный способ удовлетворить все требования использования определенных экспортируемой целью разведки и добычами в Даунстрит:

target_link_library(Downstream Upstream) 

В том же время, можно извлечь целевые свойства по отдельности , и использовать их изолированно, как вы считаете нужным.

Stricto-sensu, «привязка против» - это требование использования, поэтому я предполагаю, что вы хотите контролировать, какое требование удовлетворить, а какие нет.

Если вы хотите установить ссылку на библиотеку Upstream, вам необходимо установить ссылку на библиотеки, определенные в целевом объекте INTERFACE_LINK_LIBRARY. Вы можете извлечь связывающее требование экспортированной цели, даже если это 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) 
+0

Принято без увеличения: даже не знал, что он существует;) –

Смежные вопросы