CMake无法找到mysqlclient库

时间:2016-08-02 18:38:08

标签: c++ mysql cmake

我使用CMake生成一个makefile来编译一个使用boost,eigen和mysqlclient库的C ++项目。

在make过程中,代码似乎在编译,但是在链接阶段我得到了错误

ld: library not found for -lmysqlclient

我有一行target_link_libraries(my_executable mysqlclient) 在我的CMakeLists.txt文件中。当我删除该行时,我不再收到该错误消息,但随后我得到了一长串未定义符号错误(所有这些都与mysql有关)。 该项目在Xcode中正确构建,所以我知道至少在我的机器上设置了mysql客户端库。 有什么提示,建议吗?

2 个答案:

答案 0 :(得分:1)

您需要使用Kitware中的FindMySQL.make包(将文件保存在此处: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}应包含要与

链接的库文件的完全限定路径

答案 1 :(得分:0)

如果只想包含/链接到mysqlclient C API而不创建cmake文件,则可以使用cmake中的pkg_check_modules

find_package(PkgConfig)
pkg_check_modules(MySQL REQUIRED mysqlclient>=5.7)

和相关的变种

target_include_directories(${PROJECT_NAME} PUBLIC ${MySQL_INCLUDE_DIRS})
target_link_libraries(${PROJECT_NAME} PUBLIC ${MySQL_LIBRARIES})