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

时间:2017-01-11 16:19:30

标签: c++ macos cmake mysql-connector

我似乎无法找到解决我的CMake问题的方法。

我想在我的/Desktop/example目录中使用mysql-connector-c ++和CURL,我已经制作了以下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 file,解压缩并将其放在我当前的目录中。

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

fatal error: 
  'mysql_connection.h' file not found

这很奇怪,因为当我删除mysql-connector头时,CURL工作正常。

关于为什么这不起作用的任何想法?

N.B 以下命令以所述结果运行:

g++ -std=c++14 -lcurl main.cpp  //Success
g++ -std=c++14 -lcurl -lmysqlcppconn main.cpp //Fatal eror: 'mysql_connection.h' file not found

2 个答案:

答案 0 :(得分:2)

我相信CMake并不知道包含标题和库的目录作为&#34; include&#34;或&#34;图书馆&#34;目录。您可以尝试的一种解决方案是在调用之前指定include和link目录

import foo.bar.baz as fbb

所以你的CMakeLists.txt应该是这样的:

ADD_EXECUTABLE (main main.cpp)  

很少注意到:

1)如果您想在来源中拨打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) ,那么您应该使用上面的CMakeLists.txt ;

2)如果您想在来源中拨打driver.h,那么您应该使用下面的CMakeLists.txt

cppconn/driver.h

由于你的CMake会变得更复杂,你也可以在每个目标的基础上定义包含目录和库,但上面的内容应该适合你现在拥有的东西。

答案 1 :(得分:0)

首先在你的 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 文件的名称

祝你好运