CMake und Reihenfolge abhängige Verknüpfung von gemeinsamen Bibliotheken

Habe ich ein paar kleine Komponenten, die ich Baue, wie shared libraries, die für meine Haupt-Anwendung. Können ein Beispiel der liba und libb. Jeder wird gebaut, in Ihr eigenes Unterverzeichnis wie folgt:

add_library(liba SHARED a.cpp)

Dann in den root Ordner Projekt, ich brauche, um zu verbinden, meine wichtigste Anwendung für beide.

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

CMake läuft mit diesem feinen, und meine Anwendung kompiliert, kann Sie aber nicht verknüpfen. Das problem ist, dass die b-Referenzen ein. Wenn ich liefern die Reihenfolge der Bibliotheken beim verknüpfen als

target_link_libraries(dummy b a)

Das Programm kompiliert und verlinkt einfach gut

Wenn diese Art von system beginnt mit komplexer inter Abhängigkeit der Bibliotheken, beginnt es unmöglich zu sein, auch wenn die Abhängigkeiten sind azyklisch. Wie verwalte ich die Verknüpfung Schritt hier? Gibt es da einen trick der Bestellung von Bibliotheken für die Verknüpfung in CMake?

InformationsquelleAutor der Frage dusktreader | 2012-08-30

Schreibe einen Kommentar