Установка SOCI MySQL для C++
Второй день пытаюсь установить SOCI по https://dane-bulat.medium.com/working-with-databases-in-c-an-introduction-7d6a6a78ae66 этой инстуркции. Ошибка выдается на этапе
cmake -G "Unix Makefiles" ..
make
make install
Пытался устанавливать папку в build
внутри самой SOCI, как и написано на сайте, после чего прописывал пути к папкам в launch.json
и c_cpp_properties.json
. После этой попытки удалял и устанавливал SOCI в саму папку проекта C++, но после команды make
все равно выдавалась ошибка, после make install
тоже была ошибка, прочитал что вводить надо с -i
для игнорирования ошибок. В итоге выдаются ошибки
#include <soci.h>
#include <soci-mysql.h>
что эти файлы не найдены и обнаружена ошибка include
upd:
В общем, так и не разобрался как сделать это в VSCode, поэтому установил CLion, в нем проще устанавливать сторонние библиотеки. В самой папке soci/examples/subdir-include/
нашел файл инструкцию как прописать файл CMakeLists.txt
в проекте на CLion, и исчезла ошибка soci.h file not found
, но возник другой вопрос. Как в soci backend называется mysql, чтоб подключить именно его в строке option(SOCI_EMPTY "Build the sample backend called Empty" ON)
, потому что в примере используют backend Empty
upd_upd:
Всё отчистил и скачал папку SOCI с gihub напрямую в CLionProjects/untitled/lib
, не прописывал команды выше
cmake -G "Unix Makefiles" -DWITH_BOOST=OFF -DWITH_MYSQL=ON
make
make install
потому что выдается куча ошибок в терминале.
Прописал файл CMakeLists.txt так:
cmake_minimum_required(VERSION 3.28)
project(untitled)
set(CMAKE_CXX_STANDARD 17)
set(SOCI_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/soci)
find_package(Soci REQUIRED)
option(SOCI_MYSQL "Build the sample backend called MySQL" ON)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/lib/soci ${SOCI_BINARY_DIR})
add_executable(untitled untitled.cpp)
target_link_libraries(untitled
PRIVATE
Soci::core
Soci::mysql
)
Все равно выдается ошибка
fatal error: 'mysql.h' file not found
#include <mysql.h> // MySQL Client
Ответы (1 шт):
Установил с помощью git clone
библиотеки boost
и mysql-connector-cpp
в CLionProjects/untitled/lib/
, прописал CMakeLists.txt
:
cmake_minimum_required(VERSION 3.28)
project(untitled)
set(CMAKE_CXX_STANDARD 17)
set(SOCI_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/soci)
set (Boost_USE_STATIC_LIBS OFF)
find_package(Soci REQUIRED)
find_package (Boost REQUIRED COMPONENTS unit_test_framework)
include_directories (${Boost_INCLUDE_DIRS})
option(SOCI_MYSQL "Build the sample backend called MySQL" ON)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/lib/soci ${SOCI_BINARY_DIR})
add_executable(untitled untitled.cpp)
target_link_libraries(untitled PRIVATE Soci::core Soci::mysql ${Boost_LIBRARIES})
Но проблема не решилась, поэтому в конце этого же файла скопировал и вставил код из SOCI/cmake/modules/FindMySQL.cmake
.
После этого все заработало, и код вроде как компилируется и выполняется.