Как исправить недостающие заголовки Mongo CXX в приложении C ++? (CMake) - PullRequest
1 голос
/ 14 апреля 2019

Я установил Mongo C и Mongo CXX для создания приложения, которое использует Mongo в качестве базы данных.Я компилирую приложение, используя CMake.

Мой CMakeLists.txt файл выглядит так:

# CMake
CMAKE_MINIMUM_REQUIRED(VERSION 3.10.2)

PROJECT(Proto-buffer CXX)

SET(CMAKE_CXX_STANDARD 17)

set(CMAKE_CXX_EXTENSIONS OFF)

# Libraries
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")

# Executables
ADD_EXECUTABLE(${PROJECT_NAME} ./source/classes/connection/connection.cpp)

И приложение выглядит так:

#include <cstdint>

#include <iostream>

#include <vector>

#include <bsoncxx/json.hpp>

#include <mongocxx/client.hpp>

#include <mongocxx/stdx.hpp>

#include <mongocxx/uri.hpp>

int main(const int argc, const char *argv[]) {
    mongocxx::instance instance{};

    mongocxx::client client{mongocxx::uri{"mongodb://localhost:27017"}};

    return 0;
}

Когда я компилирую приложение cmake ../. в папке build , я получаю сообщение об ошибке:

CMakeFiles/Proto-buffer.dir/source/classes/connection/connection.cpp.o: In function `main':
connection.cpp:(.text+0x53): undefined reference to `mongocxx::v_noabi::uri::uri(bsoncxx::v_noabi::string::view_or_value)'
connection.cpp:(.text+0xa8): undefined reference to `mongocxx::v_noabi::client::client(mongocxx::v_noabi::uri const&, mongocxx::
v_noabi::options::client const&)'
connection.cpp:(.text+0xc6): undefined reference to `mongocxx::v_noabi::client::~client()'
connection.cpp:(.text+0xd5): undefined reference to `mongocxx::v_noabi::uri::~uri()'
connection.cpp:(.text+0x129): undefined reference to `mongocxx::v_noabi::uri::~uri()'
collect2: error: ld returned 1 exit status
CMakeFiles/Proto-buffer.dir/build.make:94: recipe for target 'Proto-buffer' failed
make[2]: *** [Proto-buffer] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/Proto-buffer.dir/all' failed
make[1]: *** [CMakeFiles/Proto-buffer.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

Я ожидаю компиляции этого приложения без ошибок.Я прочитал установочную документацию , CMakeLists примеры для Mongo и другие вопросы по Stack Over Flow.

Какие заголовки мне нужно добавить в файл CPP, иликакие библиотеки / флаги мне нужно добавить в файл CMakeLists.txt , чтобы компилировать без ошибок?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...