我是 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.
我的 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++ 连接器 1.1.3-GA MS Windows(64 位 x86).msi 安装程序中的一个错误,并且包含目录中的一些文件丢失了。
为了解决这个问题,我将安装目录中的 include 目录替换为源代码中的目录:https://github.com/mariadb-corporation/mariadb-connector-cpp/tree/1.1.3