Wenn Sie mit Projekten arbeiten, die von mehreren statischen Bibliotheken abhängig sind, ist das Zusammenführen dieser Bibliotheken zu einer einzigen zusammenhängenden Einheit unerlässlich. CMake bietet eine robuste Lösung für diese Herausforderung und macht die Pflege nachgelagerter Abhängigkeiten überflüssig.
Versuche, statische Bibliotheken mithilfe von target_link_libraries direkt zu kombinieren, erweisen sich häufig als erfolglos. Wenn die kombinierte Bibliothek jedoch als Abhängigkeit für eine ausführbare Datei verwendet wird, scheint CMake die Bibliotheken automatisch zusammenzuführen.
Ein benutzerdefiniertes Ziel kann verwendet werden, um das gewünschte Ergebnis zu erzielen:
add_custom_target(combined COMMAND ar -x $<TARGET_FILE:a> COMMAND ar -x $<TARGET_FILE:b> COMMAND ar -qcs ${C_LIB} *.o WORKING_DIRECTORY ${CMAKE_BINARY_DIR} DEPENDS a b )
Dieses Ziel extrahiert Objektdateien aus den einzelnen statischen Bibliotheken und kombiniert sie in einer neuen statischen Bibliothek.
Falls gewünscht, kann das Dienstprogramm libtool für den gleichen Zweck genutzt werden:
add_custom_target(combined COMMAND libtool -static -o ${C_LIB} $<TARGET_FILE:a> $<TARGET_FILE:b> WORKING_DIRECTORY ${CMAKE_BINARY_DIR} DEPENDS a b )
Obwohl es den Anschein hat, dass es einen einfacheren Ansatz geben sollte, ist dies der Fall Das benutzerdefinierte Ziel kombiniert statische Bibliotheken effektiv in einer. Selbstverständlich vereinfacht diese Technik das Abhängigkeitsmanagement und gewährleistet die nahtlose Bereitstellung kombinierter Bibliotheken an nachgelagerte Verbraucher.
Das obige ist der detaillierte Inhalt vonWie kann ich mit CMake mehrere statische Bibliotheken zu einer zusammenführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!