CMake rencontre des difficultés à localiser la bibliothèque à l'aide de "link_directories"
Lorsque vous tentez de lier une bibliothèque partagée, libprotobuf.so, à l'aide des "link_directories" de CMake commande, un utilisateur rencontre des erreurs de l'éditeur de liens indiquant des références non définies aux fonctions de la bibliothèque. Bien que la bibliothèque réside dans le répertoire spécifié, CMake ne parvient pas à la localiser.
La solution
Le problème vient de l'ordre dans lequel les commandes CMake sont placées dans le Fichier CMakeLists.txt. La commande "link_directories" doit être invoquée avant la commande "add_executable", plutôt qu'avant la commande "target_link_libraries".
Explication
"add_executable" crée une cible exécutable, tandis que "link_directories" spécifie quels répertoires doivent être recherché des bibliothèques partagées. En plaçant la commande "link_directories" après la commande "add_executable", CMake ne peut pas trouver la bibliothèque lors de la tentative de liaison de l'exécutable.
CMakeLists.txt modifié
link_directories(/usr/lib/x86_64-linux-gnu) add_executable(test main.cpp) target_link_libraries(test protobuf)
Une fois l'ordre des commandes corrigé, CMake réussit à localiser la bibliothèque libprotobuf.so, et l'éditeur de liens ne produit des erreurs de référence non définies.
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!