我正在使用 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/