c++ - CMake 无法找到 mysqlclient 库

标签 c++ mysql cmake

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

在 make 过程中,代码似乎可以编译,但在链接阶段出现错误

ld: library not found for -lmysqlclient

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

最佳答案

您需要使用 Kitware 的 FindMySQL.make 包(将文件保存在这里:https://cmake.org/Wiki/CMakeUserFindMySQL(更新链接:https://gitlab.kitware.com/cmake/community/-/wikis/contrib/modules/FindMySQL)作为 ${CMAKE_SOURCE_DIR}/cmake/找到MySQL.cmake),然后找到库:

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

最后,您在 cmake 中的链接步骤应替换为

target_link_library(myexecutable ${MYSQL_LIBRARY})

${MYSQL_LIBRARY} 应该包含您要链接的库文件的完全限定路径

关于c++ - CMake 无法找到 mysqlclient 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38728109/

相关文章:

c++ - 如何在不写入任何内容的情况下获得 stringstream 的实际最大大小?

php - mysql更新时出错

python - 输出相同时不覆盖文件的简单方法

c++ - CMake 删除包含目录

c++ - 这是 g++ 和 clang++ 优化的错误吗?

c++ boost asio 异步函数不能在 dll 中工作

c# - 删除字符串变量中存储的值的最后两个字符

mysql - 如何防止用户访问特定模式?

c++ - 在 CMake 中使用编译器前缀命令(distcc、ccache)

c++ - 具有许多参数的函数 - 将它们作为结构