CMake i zależne od zamówienia połączenie bibliotek współdzielonych

Mam kilka małych komponentów, które buduję jako biblioteki współdzielone dla mojej głównej aplikacji. Użyjmy przykładuliba ilibb. Każdy z nich jest zbudowany we własnym podkatalogu w następujący sposób:

add_library(liba SHARED a.cpp)

Następnie w głównym folderze projektu muszę połączyć moją główną aplikację z obydwoma.

include_directories(a)
include_directories(b)
add_executable(dummy dummy.cpp)
target_link_libraries(dummy a b)

CMake działa bez zarzutu, a moja aplikacja się kompiluje, ale nie łączy. Problem polega na tym, że b odnosi się do a. Jeśli podam kolejność bibliotek podczas łączenia jako

target_link_libraries(dummy b a)

Program dobrze się kompiluje i łączy

Kiedy ten rodzaj systemu zaczyna się wiązać z bardziej złożoną zależnością bibliotek, zaczyna być niemożliwy, nawet jeśli zależności są acykliczne. Jak zarządzać tutaj krokiem łączenia? Czy jest jakiś sposób na zamawianie bibliotek do łączenia w CMake?

questionAnswers(2)

yourAnswerToTheQuestion