Ich habe eine Sammlung von libfooi.a; libfoo1.a, libfoo2.a, libfoo3.a ... dass die Verwendung von Factories (mit statischem Code) über eine gemeinsame Schnittstelle zum Erstellen von C++ - Objekten verfügt.Erstellen Sie eine statische Bibliothek mit einer anderen STATIC-Bibliothek, die Inhalt in iOS mit CMake
Mit CMake wähle ich eine von ihnen, und erstellen Sie eine libfooWrapper.a, die es verknüpfen und den gesamten Inhalt hinzufügen. Mit CMake diese CMakeLists.txt arbeitet in Android:
PROJECT(fooWrapper)
INCLUDE_DIRECTORIES(___)
ADD_LIBRARY(fooWrapper SHARED ${SRC} ${HEADERS}) # Must be STATIC in iOS
IF(selected1)
TARGET_LINK_LIBRARIES(fooWrapper -Wl,--whole-archive foo1 -Wl,--no-whole-archive)
ELSEIF(...)
TARGET_LINK_LIBRARIES(fooWrapper -Wl,--whole-archive foo2 -Wl,--no-whole-archive)
Eine ausführbare Anwendung Projekt manuell erstellt, Just Link fooWrapper und Arbeit erzeugt.
Aber in iOS mit Clang, habe ich ADD_LIBRARY zu STATIC geändert, und versuchen Sie mit -Wl, - ganze Archiv aber nicht funktioniert. Ich habe die Dokumentation davon mit -Obj -WL überprüft, -force_load muss funktionieren. Ich habe auch versucht, Flag -Obj-Wl, -all_load zu verwenden.
Analysieren Bibliothek libfooWrapper.a mit Otool, scheint es, dass der gesamte Inhalt von libfooi.a ist nicht in libfooWrapper.a hinzugefügt, aber ich muss es innen setzen, um die Änderung manuell Flags in ausführbaren App-Projekt zu vermeiden.
Was ist mit der Verknüpfung falsch?