这是我第一次尝试将 MariaDB 链接到 CMake 中的 C++ 程序
MariaDB MySQL 版本:10.5.21(服务器使用的是什么)
我目前拥有的 CMakeLists.txt 不起作用,如下所示:
`
cmake_minimum_required(VERSION 3.20)
project(Dance_Syllabuses_Backend VERSION 0.1 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(MARIADB_DIR "C:/Program Files/MariaDB 10.5")
set(MARIADB_INCLUDE_DIR "${MARIADB_DIR}/include")
set(MARIADB_LIB_DIR "${MARIADB_DIR}/lib")
find_library(MARIADB_LIB NAMES mariadb PATHS ${MARIADB_LIB_DIR})
if (MARIADB_LIB)
message(STATUS "Found MariaDB: ${MARIADB_LIB}")
else()
message(FATAL_ERROR "MariaDB not found")
endif()
set(ENABLE_NET OFF CACHE BOOL "Enable Net" FORCE)
set(ENABLE_ENCODINGS OFF CACHE BOOL "Enable Encodings" FORCE)
set(ENABLE_XML OFF CACHE BOOL "Enable XML" FORCE)
set(ENABLE_JSON OFF CACHE BOOL "Enable JSON" FORCE)
set(ENABLE_MONGODB OFF CACHE BOOL "Enable MongoDB" FORCE)
set(ENABLE_DATA_SQLITE OFF CACHE BOOL "Enable Data SQlite" FORCE)
set(ENABLE_REDIS OFF CACHE BOOL "Enable Redis" FORCE)
set(ENABLE_ZIP OFF CACHE BOOL "Enable Zip" FORCE)
set(ENABLE_PAGECOMPILER OFF CACHE BOOL "Enable PageCompiler" FORCE)
set(ENABLE_PAGECOMPILER_FILE2PAGE OFF CACHE BOOL "Enable File2Page" FORCE)
set(ENABLE_ACTIVERECORD OFF CACHE BOOL "Enable ActiveRecord" FORCE)
set(ENABLE_ACTIVERECORD_COMPILER OFF CACHE BOOL "Enable ActiveRecord Compiler" FORCE)
set(ENABLE_DATA_MYSQL ON CACHE BOOL "Enable MySQL" FORCE)
add_subdirectory(external/POCO)
add_executable(application
include/customer_dao.hpp
include/customer.hpp
include/scope_guard.hpp
src/customer_dao.cpp
src/customer.cpp
src/main.cpp)
target_include_directories(application PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include)
target_link_libraries(application PRIVATE Poco::Data Poco::DataMySQL)
`
尝试构建它并期望它能够找到 MariaDB 并工作,但它没有
编辑:使帖子更加清晰
收到错误消息“MariaDB not found”,这是我们输出的内容。假设 POCO 会关心我们声明的那些变量,然后知道使用 MariaDB 以及在哪里可以找到 MariaDB。
MYSQL_ROOT_DIR - 设置根安装路径,在其中查找 MySQL 或 MariaDB 的包含路径和库
MYSQL_ROOT_INCLUDE_DIRS - 设置包含查找 MySQL 或 MariaDB 标头的路径
MYSQL_ROOT_LIBRARY_DIRS - 设置在何处查找 MySQL 或 MariaDB 库的库路径
这些是 POCO 应该关注的路径。 https://docs.pocoproject.org/current/00200-GettingStarted.html 如果我们能够正确设置这些,那么它也许能够找到 MariaDB。
看起来您安装的 MariaDB Server 没有开发组件(包含头文件和库)。 .dll 还不够,为了链接,您将需要 .lib 文件中的符号。
另请注意,包含文件不存储在
${MARIADB_DIR}/include
中,而是存储在 ${MARIADB_DIR}/include/mysql
中