Использование драйвера mongodb cxx в проекте cmake c ++

Я новичок в cmake и хочу подключиться к mongodb, используя c ++ и последнюю версию драйвера mongodb cxx. Мне удалось скомпилировать и установить драйвер, но теперь я использовал его в своем проекте cmake.

Я установил драйвер mongodb с настройками по умолчанию, поэтому он находится в каталоге / usr / local / lib / include / mongocxx / v_noabi / mongocxx.

В моем файле cmake мне удалось получить включенные разрешения:

include_directories (/ usr / local / lib / include / mongocxx / v_noabi / usr / local / lib / include / bsoncxx / v_noabi)

но я не знаю, как на самом деле связать библиотеки драйверов с моим исполняемым файлом. Кто-нибудь может мне помочь?

1

Решение

Вам не нужно делать это таким образом. Вы можете и должны найти драйвер C ++ 11 через CMake find_package или через pkg_check_modules подсистемы. Драйвер C ++ 11 поддерживает оба.

2

Другие решения

Я сделал это, связав все, что связано с документами драйвера mongocxx, и использовал CMake ‘find_package’:

find_package(libmongocxx REQUIRED)
find_package(libbsoncxx REQUIRED)
include_directories(${LIBMONGOCXX_INCLUDE_DIR})
include_directories(${LIBBSONCXX_INCLUDE_DIR})
include_directories("/usr/local/include/mongocxx/v_noabi")
include_directories("/usr/local/include/bsoncxx/v_noabi")
include_directories("/usr/local/include/libmongoc-1.0")
include_directories("/usr/local/include/libbson-1.0")
include_directories("/usr/local/lib")

add_executable(YOUR_PROJECT ${SOURCE_FILES})

target_link_libraries(YOUR_PROJECT ${LIBMONGOCXX_LIBRARIES})
target_link_libraries(YOUR_PROJECT ${LIBBSONCXX_LIBRARIES})
6

Эта работа для меня:

cmake_minimum_required(VERSION 3.10)
project(cmongodb)

set(CMAKE_CXX_STANDARD 14)

find_package(libbsoncxx-static REQUIRED)
find_package(libmongocxx-static REQUIRED)

include_directories(${LIBMONGOCXX_STATIC_LIBRARIES})
include_directories(${LIBBSONCXX_STATIC_LIBRARIES})
include_directories(${LIBMONGOCXX_STATIC_INCLUDE_DIRS})
include_directories(${LIBBSONCXX_STATIC_INCLUDE_DIRS})

message(STATUS "${LIBMONGOCXX_STATIC_LIBRARIES}")
message(STATUS "${LIBMONGOCXX_STATIC_INCLUDE_DIRS}")

message(STATUS "${LIBBSONCXX_STATIC_LIBRARIES}")
message(STATUS "${LIBBSONCXX_STATIC_INCLUDE_DIRS}")

add_executable(cmongodb main.cpp mymongo.cpp mymongo.h)

target_link_libraries(cmongodb ${LIBMONGOCXX_STATIC_LIBRARIES} ${LIBBSONCXX_STATIC_LIBRARIES})

Здесь я устанавливаю Mongo DB в префиксе static. Как правило, вы будете рокировать все

static а также _STATIC

0
По вопросам рекламы [email protected]