CMake: Wie erstelle ich eine einzelne gemeinsam genutzte Bibliothek aus allen statischen Bibliotheken von Teilprojekten?
Ich habe folgendes Layout:
top_project
+ subproject1
+ subproject2
Jeder vonsubproject1
undsubproject2
Erstellt eine statische Bibliothek. Ich möchte diese statischen Bibliotheken in einer einzigen gemeinsam genutzten Bibliothek im Internet verknüpfentop_project
Niveau.
Die Informationen, die ich bisher gesammelt habe, sind:
Entweder kompilieren mit-fPic
(auf allen außer Windows erforderlich), um positionsunabhängigen Code zu erstellen, mit dem die statischen Bibliotheken zu einer einzigen gemeinsam genutzten Bibliothek verknüpft oder alle statischen Bibliotheken dekomprimiert werden können (z. B. mithilfe vonar
) und verknüpfen Sie sie erneut in eine gemeinsam genutzte Bibliothek (die meiner Meinung nach eine unelegante und nicht tragbare Lösung ist)Alle Quelldateien müssen explizit an die angegeben werdenadd_library
befehl: aus irgendeinem grund, den ich nicht verstehen kann, einfach schreibenadd_library(${PROJECT_NAME} SHARED subproject1 subproject2)
funktioniert nicht wie erwartet (es erstellt im Wesentlichen eine leere Bibliothek und registriert die Abhängigkeiten nicht richtig)Es gibt eine OBJECT-Bibliotheksfunktion in CMake, aber ich glaube nicht, dass es wirklich darum geht, das zu tun, was ich will.Irgendwelche Gedanken?