2016-08-02 242 views
0

我正在使用CMake生成一個makefile來編譯使用boost,eigen和mysqlclient庫的C++項目。在make過程中,代碼似乎編譯成OK,但是在鏈接階段,出現「ld:library找不到-lmysqlclient」的錯誤。我在我的CMakeLists.txt文件中有 target_link_libraries(my_executable mysqlclient) 。當我刪除那條線時,我不再得到那個錯誤信息,但是我得到一長串未定義的符號錯誤(所有這些都與mysql有關)。 該項目在Xcode中生成確定,所以我知道至少mysql客戶端庫在我的機器上設置。 任何提示,建議?CMake無法找到mysqlclient庫

回答

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}應該包含到庫中的文件要與

+0

釷鏈接的完全限定路徑anks。我嘗試了你的建議:將文件保存爲FindMySQL.cmake,然後將這兩行添加到CMakeLists.txt中。當我這樣做時,我從CMake獲得以下輸出:CMakeLists.txt中的CMake警告:64(find_package): 通過不在CMAKE_MODULE_PATH中提供「FindMySQL.cmake」,此項目有 要求CMake查找由「MySQL」,但 CMake沒有找到一個。 無法找到「MySQL的」與任何 下列名稱提供了一個程序包配置文件: MySQLConfig.cmake 我已經編輯了答案固定模塊路徑問題的mysql-config.cmake –

+0

。我假定你已經正確安裝了這個設備,並將該文件下載到了正確的位置。 – subzero

+0

謝謝。事實上,我確實設置了模塊路徑,但仍然出現相同的錯誤。 –