簡體   English   中英

使用 CMake 和 C++ 運行 mysql-connector?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM