Vinculação dependente do CMake e do pedido de bibliotecas compartilhadas
Eu tenho alguns pequenos componentes que estou construindo como bibliotecas compartilhadas para o meu aplicativo principal. Vamos usar um exemplo deliba
elibb
. Cada um é construído dentro de seu próprio subdiretório da seguinte maneira:
add_library(liba SHARED a.cpp)
Então, na pasta do projeto raiz, preciso vincular meu aplicativo principal a ambos.
include_directories(a)
include_directories(b)
add_executable(dummy dummy.cpp)
target_link_libraries(dummy a b)
CMake corre bem com isso, e meu aplicativo compila, mas não consegue linkar. O problema é que b faz referência a. Se eu fornecer a ordem das bibliotecas enquanto estiver ligando
target_link_libraries(dummy b a)
O programa compila e liga bem
Quando esse tipo de sistema começa a envolver uma interdependência mais complexa das bibliotecas, ele começa a ser impossível mesmo se as dependências forem acíclicas. Como faço para gerenciar a etapa de vinculação aqui? Existe um truque para encomendar bibliotecas para vincular no CMake?