2016-08-02 1 views
0

J'utilise CMake pour générer un fichier makefile pour compiler un projet C++ qui utilise les bibliothèques boost, eigen et mysqlclient. Pendant le processus make le code semble compiler OK, mais à l'étape de liaison, j'obtiens l'erreur "ld: library not found for -lmysqlclient". J'ai la ligne target_link_libraries (my_executable mysqlclient) dans mon fichier CMakeLists.txt. Lorsque je supprime cette ligne, je ne reçois plus ce message d'erreur, mais j'obtiens ensuite une longue liste d'erreurs de symboles non définis (toutes ayant trait à mysql). Le projet construit OK dans Xcode, donc je sais qu'au moins les bibliothèques client mysql sont configurées sur ma machine. Des conseils, des suggestions?CMake impossible de trouver la bibliothèque mysqlclient

Répondre

1

Vous voulez utiliser le package FindMySQL.make de Kitware (enregistrer le fichier ici: https://cmake.org/Wiki/CMakeUserFindMySQL comme ${CMAKE_SOURCE_DIR}/cmake/FindMySQL.cmake), puis trouver la bibliothèque:

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")  
find_package(MySQL) 

Enfin, l'étape de liaison dans CMake doit être remplacé par

target_link_library(myexecutable ${MYSQL_LIBRARY}) 

${MYSQL_LIBRARY} doit contenir le chemin complet du fichier de bibliothèque que vous souhaitez créer un lien avec

+0

Th anks. J'ai essayé ce que vous avez suggéré: enregistré le fichier comme FindMySQL.cmake, puis ajouté ces deux lignes à CMakeLists.txt. Lorsque je fais cela, je reçois la sortie suivante de CMake: CMake Warning à CMakeLists.txt: 64 (find_package): En ne fournissant pas "FindMySQL.cmake" dans CMAKE_MODULE_PATH ce projet a demandé CMake pour trouver un fichier de configuration de paquet fourni par "MySQL", mais CMake n'en a pas trouvé. Impossible de trouver un fichier de configuration de package fourni par « MySQL » avec l'un des les noms suivants: MySQLConfig.cmake mysql-config.cmake –

+0

J'ai modifié la réponse pour résoudre le problème de chemin du module. J'avais supposé que vous aviez cette installation correctement et téléchargé le fichier à l'endroit correct. – subzero

+0

Merci. En fait j'ai eu le chemin du module mis en place, mais donne toujours la même erreur. –