[英]Running mysql-connector with CMake and C++?
我似乎找不到解決我的 CMake 問題的方法。
我想使用 mysql-connector-c++ 和 CURL,在我的/Desktop/example
目錄中,我制作了以下 CMakeLists.txt:
cmake_minimum_required (VERSION 3.1.0)
PROJECT (main)
ADD_EXECUTABLE (main main.cpp)
target_link_libraries(main curl mysql-connector-c++)
target_compile_features(main PRIVATE cxx_range_for)
我在 main.cpp 中包含了以下標題:
#include <curl/curl.h>
#include <mysql_connection.h>
#include <driver.h>
#include <exception.h>
#include <resultset.h>
#include <statement.h>
我已經下載了 mysql-connector-c++ 的zip 文件,解壓縮並將其放在我的當前目錄中。
然后我運行了cmake .
和make
並生成以下錯誤:
fatal error:
'mysql_connection.h' file not found
這很奇怪,因為當我刪除 mysql-connector 標頭時,CURL 工作正常。
關於為什么這不起作用的任何想法?
注意以下命令運行時給出的結果:
g++ -std=c++14 -lcurl main.cpp //Success
g++ -std=c++14 -lcurl -lmysqlcppconn main.cpp //Fatal eror: 'mysql_connection.h' file not found
我相信CMake不知道該目錄包含標頭和庫作為“ include”或“ library”目錄。 您可以嘗試的一種解決方案是在調用之前指定包含和鏈接目錄
ADD_EXECUTABLE (main main.cpp)
因此您的CMakeLists.txt應該如下所示:
cmake_minimum_required (VERSION 3.1.0)
project(main)
set(FULL_PATH_TO_MYSQL_CONNECTOR_CPP_DIR your_path_to_mysql_connectorcpp)
include_directories(${FULL_PATH_TO_MYSQL_CONNECTOR_CPP_DIR}/include)
include_directories(${FULL_PATH_TO_MYSQL_CONNECTOR_CPP_DIR}/include/cppconn)
link_directories(${FULL_PATH_TO_MYSQL_CONNECTOR_CPP_DIR}/lib)
add_executable(main main.cpp)
target_link_libraries(main curl mysqlcppconn)
target_compile_features(main PRIVATE cxx_range_for)
一些注意事項:
1)如果要在源代碼中調用driver.h
,則應使用上面的CMakeLists.txt;
2)如果你想打電話cppconn/driver.h
在你的源代碼,那么你應該使用的CMakeLists.txt 所示 :
cmake_minimum_required (VERSION 3.1.0)
project(main)
set(FULL_PATH_TO_MYSQL_CONNECTOR_CPP_DIR your_path_to_mysql_connectorcpp)
include_directories(${FULL_PATH_TO_MYSQL_CONNECTOR_CPP_DIR}/include)
link_directories(${FULL_PATH_TO_MYSQL_CONNECTOR_CPP_DIR}/lib)
add_executable(main main.cpp)
target_link_libraries(main curl mysqlcppconn)
target_compile_features(main PRIVATE cxx_range_for)
隨着您的CMake變得越來越復雜,您還可以針對每個目標定義包含目錄和庫,但是對於您現在擁有的東西來說,以上所述是可以的。
首先在你的 mac 上安裝 mysql 庫
brew install mysql-connector-c++
然后使用上面的cmake文本
cmake_minimum_required(VERSION 3.17)
project(connectToMysql)
set(CMAKE_CXX_STANDARD 14)
add_executable(connectToMysql main.cpp)
include_directories(/usr/local/Cellar/mysql-connector-c++/8.0.25/include)
target_link_libraries(connectToMysql -L/usr/local/Cellar/mysql-connector-c++/8.0.25/lib/)
target_link_libraries(connectToMysql libmysqlcppconn8.2.8.0.25.dylib)
請記住,如果要將庫鏈接到 cmake,則必須指定該 .dylib 文件的名稱
祝你好運
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.