CMake: jak utworzyć jedną wspólną bibliotekę ze wszystkich statycznych bibliotek podprojektów?
Mam następujący układ:
top_project
+ subproject1
+ subproject2
Każdy zsubproject1
isubproject2
tworzy statyczną bibliotekę. Chciałbym połączyć te statyczne biblioteki w jednej udostępnionej bibliotece wtop_project
poziom.
Informacje, które do tej pory zebrałem, to:
Skompiluj używając-fPic
(konieczne na wszystkich systemach oprócz Windows) w celu stworzenia kodu niezależnego od pozycji, który umożliwi połączenie bibliotek statycznych w jedną bibliotekę współdzieloną lub rozpakuje wszystkie biblioteki statyczne (np. używającar
) i ponownie połącz je w bibliotekę współdzieloną (co uważam za nieeleganckie i nieprzenośne rozwiązanie)Wszystkie pliki źródłowe muszą być podane bezpośrednio doadd_library
polecenie: z jakiegoś powodu, którego nie rozumiem, po prostu piszącadd_library(${PROJECT_NAME} SHARED subproject1 subproject2)
nie działa zgodnie z oczekiwaniami (zasadniczo tworzy pustą bibliotekę i nie rejestruje poprawnie zależności)W CMake jest funkcja biblioteki OBJECT, ale nie sądzę, że jej celem jest robienie tego, co chcę.jakieś pomysły?