Lorsque vous travaillez avec des projets dépendant de plusieurs bibliothèques statiques, la fusion de ces bibliothèques en une seule unité cohérente devient essentielle. CMake offre une solution robuste à ce défi, éliminant le besoin de maintenance des dépendances en aval.
Les tentatives de combinaison de bibliothèques statiques utilisant directement target_link_libraries s'avèrent souvent infructueuses. Cependant, lorsque la bibliothèque combinée est utilisée comme dépendance pour un exécutable, CMake semble fusionner automatiquement les bibliothèques.
Une cible personnalisée peut être utilisée pour obtenir le résultat souhaité :
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 )
Cette cible extrait les fichiers objets des bibliothèques statiques individuelles et les combine dans une nouvelle bibliothèque statique.
Si vous le souhaitez, l'utilitaire libtool peut être exploité dans le même but :
add_custom_target(combined COMMAND libtool -static -o ${C_LIB} $<TARGET_FILE:a> $<TARGET_FILE:b> WORKING_DIRECTORY ${CMAKE_BINARY_DIR} DEPENDS a b )
Bien qu'il puisse sembler qu'il devrait y avoir une approche plus simple, cette la cible personnalisée combine efficacement les bibliothèques statiques en une seule. Inutile de dire que cette technique simplifie la gestion des dépendances et garantit la livraison transparente des bibliothèques combinées aux consommateurs en aval.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!