Maison > développement back-end > C++ > Pourquoi CMake ne parvient-il pas à trouver ma bibliothèque partagée lors de l'utilisation de « link_directories » ?

Pourquoi CMake ne parvient-il pas à trouver ma bibliothèque partagée lors de l'utilisation de « link_directories » ?

Susan Sarandon
Libérer: 2024-12-16 09:32:14
original
266 Les gens l'ont consulté

Why Does CMake Fail to Find My Shared Library When Using `link_directories`?

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)
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal