使用 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 连接器标头时,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不知道包含标题和库的目录作为"包含"或"库"目录。您可以尝试的一种解决方案是在调用之前指定包含和链接目录
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
,那么你应该使用上面的CMakeList.txt;
2)如果你想在你的源中调用cppconn/driver.h
,那么你应该使用下面的CMakeList.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 文件的名称
祝你好运
相关文章:
- 运行同一解决方案的另一个项目的项目
- CMake-按正确顺序将项目与C运行时对象文件链接
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- 代码在main()中运行,但在函数中出现错误
- 我在c++代码中生成了一个运行时#3异常
- 如何在linux终端中同时编译和运行c++代码
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 如何在运行中期切换GTK CSS style_context
- C++MySQL C api用户输入行
- 如何在MS Visual Studio 2019中运行QT UI
- 如何通过cpp程序运行shell脚本
- IPC使用多个管道和分支进程来运行Python程序
- 删除指向指针的指针是运行时错误吗
- 在 MySQL 中运行 HTTP 服务器以从客户端接收数据
- 使用 CMake 和 C++ 运行 mysql-connector
- MySQL C API:从不同线程运行查询时出现分段错误
- 我需要原来的mysql库运行mysql c++连接器
- 编译并运行文件夹中提供的MySQL++和C++示例
- MySQL++-运行时检查失败#2-变量周围的堆栈已损坏
- MySQL在c++中运行缓慢