Я установил 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 , чтобы компилировать без ошибок?