2016-05-31 3 views
0

Что и как делать с файлами CMake в таком удаленном случае не нужно будет заботиться о заказе зависимости? (см. мой предыдущий вопрос, связанный с вопросом Strange error: undefined reference to `class::class()').Взаимозависимость библиотек C++ с CMake

Например, если у вас есть Lib Зависимый Лива B, что в свою очередь зависит от Lib C можно было бы закодировать

add_library({MY_LIB} A B C) 

Как сделать, чтобы не быть вынуждены следовать порядку? В недалеком прошлом я просто сделал

target_link_libraries({MY_LIB} {MY_LIB}) 

Но это уже не работает для меня .... Я не знаю, почему (???). Эта проблема довольно раздражает, так как у меня есть большое количество взаимозависимых библиотек ...

Любое предложение, пожалуйста, использую cmake 3.5.2, gcc версию 4.8.4 на Ubuntu 4.8.4-2ubuntu1 ~ 14.04.3)?

+0

Не могли бы вы включить CMakeLists.txt, для которого 'target_link_libraries ({MY_LIB} {MY_LIB})' не работает? – buratino

ответ

2

Команда add_library для создания каждой библиотеки, а затем установить зависимости с target_link_libraries должно быть достаточно.

В вашем случае у вас есть, например,

add_library(A ${sources_for_A}) 
add_library(B ${sources_for_B}) 
add_library(C ${sources_for_C}) 

target_link_libraries(A B) # A depends on B 
target_link_libraries(B C) # B depends on C 

# Executable using the libraries 
add_executable(program ${sources_for_program}) 
target_link_libraries(program A) # Program uses library A (and B and C indirectly) 

Это не имеет значения, если библиотеки STATIC или SHARED.

+0

target_link_library или target_link_libraries? В чем разница, пожалуйста? – Courier

+0

Но здесь вы заботитесь о заказе, который мне нужно избегать ... – Courier

+0

Получаем это сообщение об ошибке 'Неизвестная команда CMake" target_link_library "' – Courier

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