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?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage