首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用CMake和C++运行mysql连接器?

使用CMake和C++运行mysql连接器?
EN

Stack Overflow用户
提问于 2017-01-11 16:19:30
回答 2查看 7.1K关注 0票数 1

我似乎找不到解决我的CMake问题的办法。

我想使用mysql-连接器-c++和CURL,在我的/Desktop/example目录中,我做了以下CMakeLists.txt:

代码语言:javascript
运行
复制
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中包含了以下标题:

代码语言:javascript
运行
复制
#include <curl/curl.h>

#include <mysql_connection.h>
#include <driver.h> 
#include <exception.h>
#include <resultset.h>
#include <statement.h>

我下载了压缩文件 for mysql-连接器-c++,解压缩并将其放在我的当前目录中。

然后运行cmake .make,并生成以下错误:

代码语言:javascript
运行
复制
fatal error: 
  'mysql_connection.h' file not found

这很奇怪,因为当我移除mysql-连接器头时,CURL工作得很好。

你知道为什么这不管用吗?

注:下面的命令与所述结果一起运行:

代码语言:javascript
运行
复制
g++ -std=c++14 -lcurl main.cpp  //Success
g++ -std=c++14 -lcurl -lmysqlcppconn main.cpp //Fatal eror: 'mysql_connection.h' file not found
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-11 17:26:08

我相信CMake不知道这个目录,其中包含标题和库作为一个“包括”或“库”目录。您可以尝试的一个解决方案是在调用之前指定包含目录和链接目录。

代码语言:javascript
运行
复制
ADD_EXECUTABLE (main main.cpp)  

因此,您的CMakeLists.txt应该看起来像:

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
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将变得更加复杂,您也可以在每个目标的基础上定义包含目录和库,但是上面的内容应该可以用于您现在拥有的内容。

票数 3
EN

Stack Overflow用户

发布于 2021-07-03 17:44:59

首先在mac上安装mysql库

代码语言:javascript
运行
复制
brew install mysql-connector-c++

然后使用上述cmake文本。

代码语言:javascript
运行
复制
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文件的名称。

祝好运

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41595751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档