2016-05-13 7 views
1

Ich bin neu in Cmake und ich möchte eine Verbindung zu einem Mongodb mit C++ und dem neuesten mongodb Cxx-Treiber herstellen. Ich habe es geschafft, den Treiber zu kompilieren und zu installieren, aber jetzt bin ich bei der Verwendung in meinem cmake-Projekt geblieben.Verwenden des Mongodb-Cxx-Treibers in einem cmake-C++ - Projekt

Ich habe den mongodb-Treiber mit den Standardeinstellungen installiert, er befindet sich also unter/usr/local/lib/include/mongocxx/v_noabi/mongocxx.

In meiner Cmake Datei manged i mit der umfasst zu bekommen aufgelöst:

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

, aber ich weiß nicht, wie die Treiber-Bibliotheken tatsächlich mit meiner ausführbaren Datei verknüpft werden. Könnte jemand bitte mir helfen?

Antwort

2

Sie sollten es nicht so machen müssen. Sie können und sollten den C++ 11-Treiber entweder über find_package von CMake oder über pkg_check_modules-Subsysteme finden. Der C++ 11-Treiber unterstützt beide.

+0

Danke. Ich habe es geschafft zu arbeiten! –

+0

@ paddy_89 Freut mich zu hören, dass es funktioniert. Es gilt als höflich, hilfreiche Antworten zu finden und die beste Antwort zu akzeptieren. – acm

+0

@ paddy_89 Würdest du bitte diese Antwort als richtig akzeptieren, so dass andere Leute, die die Frage sehen, wissen, dass die Antwort richtig ist? – acm

4

ich es hatte Verknüpfung alles getan, was auf mongocxx Treiber docs verbunden ist und CMake 'find_package' mit:

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}) 
+0

danke sooo viel, und es hilft mir sehr. Ich benutze macOS und installiere den mongo-cxx-Treiber mit Homebrew. Gemäß den configures (/usr/local/Cellar/mongo-cxx-driver/3.1.1/lib/cmake/libmongocxx-3.1.1/libmongocxx-config.cmake) wurden die includes dirs und lib dirs folgendermaßen gesetzt: set_and_check (LIBMONGOCXX_INCLUDE_DIRS "$ {PACKAGE_PREFIX_DIR}/include/mongocxx/v_noabi") –

+0

Meine Konfiguration ist INCLUDE_DIRECTORIES ($ {LIBBSONCXX_INCLUDE_DIRS} $ {LIBMONGOCXX_INCLUDE_DIR}) und es müssen keine 2 absoluten Pfade hinzugefügt werden. hmm, nichts für ungut, ist dies nur wünschen, mehr Kunden zu helfen, wenn es einige Informationen –

+2

i LIBBSONCXX_INCLUDE_DIR vs LIBBSONCXX_INCLUDE_DIR [S] –

Verwandte Themen