如何使用 cmake 将 mariadb c++ 连接器库链接到我的项目?

问题描述 投票:0回答:1

我是 cmake 新手,我正在尝试将我的应用程序与 mariadb 数据库连接,但无法设法将库与我的项目链接,并且出现包含错误。

[build] ...main.cpp:4:10: fatal error: mariadb/conncpp.hpp: No such file or directory
[build]     4 | #include "mariadb/conncpp.hpp"
[build]       |          ^~~~~~~~~~~~~~~~~~~~~
[build] compilation terminated.

我使用此安装它https://mariadb.com/docs/server/connect/programming-languages/cpp/install/#Windows_Installation_(MSI)

我的 CMakeLists.txt 看起来像这样:

cmake_minimum_required(VERSION 3.24)
set(PROJECT_NAME chat)
project(${PROJECT_NAME})

set(CMAKE_BUILD_TYPE Debug)
set(CMAKE_CXX_STANDARD 23)

add_executable(${PROJECT_NAME} main.cpp)

add_library(mariadbcpp STATIC IMPORTED)
set_property(TARGET mariadbcpp PROPERTY 
IMPORTED_LOCATION "C:/Program Files/MariaDB/MariaDB C++ Connector 64-bit/mariadbcpp-static.lib"
INTERFACE_INCLUDE_DIRECTORIES "C:/Program Files/MariaDB/MariaDB C++ Connector 64-bit/include/")

target_link_libraries(${PROJECT_NAME} mariadbcpp)

包含目录必须很好,因为如果我使用这个

target_include_directories(${PROJECT_NAME} PRIVATE "C:/Program Files/MariaDB/MariaDB C++ Connector 64-bit/include/")

,我遇到了不同的包含错误,我知道绝对路径很脏,但我只想让它暂时工作。

编辑

发生包含错误,因为正如评论中的 Botje 所说,我使用 set_property() 而不是 set_target_properties,但现在当我将 include 目录添加到我的应用程序时,我得到了与之前相同的错误:

[build] In file included from C:/PROGRA~1/MariaDB/MARIAD~1/include/mariadb/conncpp/Driver.hpp:26,
[build]                  from C:/PROGRA~1/MariaDB/MARIAD~1/include/mariadb/conncpp.hpp:24,
[build]                  from ...\main.cpp:4:
[build] C:/PROGRA~1/MariaDB/MARIAD~1/include/mariadb/conncpp/Connection.hpp:26:10: fatal error: Properties.hpp: No such file or directory
[build]    26 | #include "Properties.hpp"
[build]       |          ^~~~~~~~~~~~~~~~
[build] compilation terminated.
c++ cmake mariadb
1个回答
0
投票

事实证明这是 C++ 连接器 1.1.3-GA MS Windows(64 位 x86).msi 安装程序中的一个错误,并且包含目录中的一些文件丢失了。

为了解决这个问题,我将安装目录中的 include 目录替换为源代码中的目录:https://github.com/mariadb-corporation/mariadb-connector-cpp/tree/1.1.3

© www.soinside.com 2019 - 2024. All rights reserved.