2016-08-02 3 views
0

Я использую CMake для создания make-файла для компиляции проекта C++, который использует библиотеки boost, eigen и mysqlclient. Во время make-кода код, похоже, компилируется ОК, но затем на этапе компоновки я получаю сообщение об ошибке «ld: library не найден для -lmysqlclient». У меня есть строка target_link_libraries (my_executable mysqlclient) в моем файле CMakeLists.txt. Когда я удаляю эту строку, я больше не получаю это сообщение об ошибке, но затем получаю длинный список неопределенных ошибок символов (все они связаны с mysql). Проект строит ОК в Xcode, поэтому я знаю, что на моей машине настроены, по крайней мере, клиентские библиотеки mysql. Любые советы, предложения?CMake не может найти библиотеку mysqlclient

ответ

1

Вы хотите использовать FindMySQL.make пакет из Kitware (сохранить файл здесь: https://cmake.org/Wiki/CMakeUserFindMySQL, как ${CMAKE_SOURCE_DIR}/cmake/FindMySQL.cmake), а затем найти библиотеку:

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

Наконец, ваш шаг звено в CMake следует заменить

target_link_library(myexecutable ${MYSQL_LIBRARY}) 

${MYSQL_LIBRARY} должен содержать полный путь к файлу библиотеки, который вы хотите связать с

+0

Th anks. Я попробовал то, что вы предложили: сохранил файл как FindMySQL.cmake, а затем добавил эти две строки в CMakeLists.txt. Когда я это сделаю, я получаю следующий результат от CMake: Предупреждение CMake на CMakeLists.txt: 64 (find_package): Не предоставив «FindMySQL.cmake» в CMAKE_MODULE_PATH, этот проект имеет , попросил CMake найти файл конфигурации пакета, предоставленный «MySQL», но CMake его не нашел. Не удался найти файл конфигурации пакета, предоставляемый «MySQL» с любыми из следующих имен: MySQLConfig.cmake MySQL-config.cmake –

+0

Я редактировал ответ, чтобы решить проблему пути.Модуля. Я предположил, что вы правильно настроили эту программу и загрузили файл в нужное место. – subzero

+0

Спасибо. На самом деле у меня был путь к модулю, но он все равно дает ту же ошибку. –

Смежные вопросы