Menu Docs
Página inicial do Docs
/ / /
Driver C++

Incluir e vincular o driver em seu programa

Neste guia, você aprenderá a usar o CMake e o pkg-config para incluir o driver C++ em seu projeto.

Os exemplos nesta página usam o programa de exemplo view_and_value.cpp do código-fonte do driver C++. Obtenha o código-fonte do driver C++ seguindo o guia dedownload e instalação .

Nas seções a seguir, substitua <path-to-mongo-cxx-driver-sources> pelo caminho real em que a árvore de origem do driver C++ está localizada em seu sistema.

Você não precisa executar este programa em um servidor MongoDB .

Os exemplos nesta página referenciam destinos de biblioteca de driver C++. Os exemplos na seção CMake usam o destino mongo::bsoncxx_shared e os exemplos na seção pkg-config usam o pacote libbsoncxx. Você pode usar os seguintes destinos de biblioteca alternativos, dependendo das necessidades do seu projeto:

  • CMake: - mongo::bsoncxx_shared - mongo::mongoccxx_shared - mongo::bsoncxx_static - mongo::mongoccxx_static

  • pkg-config: - libbsoncxx - libmongocxx - libbsoncxx-static - libmongocxx-static

A disponibilidade dos destinos depende do método de instalação específico.

Você pode usar o CMake para incluir o driver C++ em seu projeto. O CMake fornece o comando find_package, que seu projeto pode usar para localizar o driver C++ depois de instalado. Como alternativa, seu projeto pode usar o comando add_subdirectory avançado sem instalar o driver C++ .

Nas seções a seguir, se você encontrar erros, talvez seja necessário especificar opções adicionais para o comando CMake inicial. As opções específicas dependem do seu ambiente específico. No entanto, as seguintes opções resolvem os problemas mais comuns:

  • Se o seu compilador padrão não for pelo menos C++17, use a opção -DCMAKE_CXX_STANDARD=17 CMake.

  • Se você instalou o driver em um local não padrão, especifique a opção -DCMAKE_PREFIX_PATH=/<path-to-mongo-cxx-driver-installation>. Por exemplo:

cmake -Bbuild -DCMAKE_CXX_STANDARD=17 -DCMAKE_PREFIX_PATH=/opt/mongodb/cxx-driver

Depois de instalar o driver C++ , você pode usar o comando find_package do CMake para integrar o driver ao seu projeto.

Dica

Para saber como instalar o driver C++ , acesse os seguintes guias:

Para utilizar o comando find_package, crie um arquivo CMakeLists.txt no seu diretório de projeto . O exemplo seguinte cria um arquivo CMakeLists.txt no diretório de projeto do /home/user/project1 que utiliza find_package:

/log/user/ projeto1/CMakeLists.txt
cmake_minimum_required (VERSION 3.15)
project (builder_basic LANGUAGES CXX)
find_package (bsoncxx 4.0 REQUIRED)
add_executable (view_and_value /<path-to-mongo-cxx-driver-sources>/examples/bsoncxx/view_and_value.cpp)
# we need target_include_directories because view_and_value.cpp refers to a common example header
target_include_directories (view_and_value PRIVATE /<path-to-mongo-cxx-driver-sources>)
target_link_libraries (view_and_value PRIVATE mongo::bsoncxx_shared)

Em seguida, execute os seguintes comandos para construir seu projeto:

$ cd /home/user/project1
$ cmake -Bbuild
$ cmake --build build

Esses comandos retornam informações sobre o processo de construção. Após a conclusão da construção, execute o executável produzido na etapa anterior:

$ ./build/view_and_value

A saída se assemelha ao seguinte:

{ "team" : "platforms", "id" : { "$oid" : "66f4be6fef9eb8b9240619f0" }, "members" : [ "tyler", "jason", "drew", "sam", "ernie", "john", "mark", "crystal" ] }
Got key, key = team
Got String!
Got key, key = id
Got ObjectId!
Got key, key = members
Got Array!
array element: tyler
array element: jason
array element: drew
array element: sam
array element: ernie
array element: john
array element: mark
array element: crystal
as expected, we have a team
document has 3 keys.
document keys are:
team
id
members

Como alternativa, você pode usar o comando add_subdirectory do CMake sem instalar o driver C++ . Esta é uma técnica avançada que, ao contrário do comando find_package, não suporta a especificação de restrições de versão.

Observação

Talvez seja necessário ajustar os sinalizadores de construção do seu projeto para acomodar essa abordagem. A invocação do CMake pelo seu projeto deve incluir quaisquer sinalizadores ou opções que normalmente são passados para o driver C++ como parte de sua compilação.

Para utilizar o comando add_subdirectory, crie um arquivo CMakeLists.txt no seu diretório de projeto . O exemplo seguinte cria um arquivo CMakeLists.txt no diretório de projeto do /home/user/project2 que utiliza add_subdirectory:

/log/user/ projeto2/CMakeLists.txt
cmake_minimum_required (VERSION 3.15)
project (builder_basic LANGUAGES CXX)
# specify a source_dir which is out-of-tree from this project, so also specify bin_dir
add_subdirectory (/<path-to-mongo-cxx-driver-sources> ./build/mongo-cxx-driver)
add_executable (view_and_value /<path-to-mongo-cxx-driver-sources>/examples/bsoncxx/view_and_value.cpp)
# we need target_include_directories because view_and_value.cpp refers to a common example header
target_include_directories (view_and_value PRIVATE /<path-to-mongo-cxx-driver-sources>)
# no mongo:: namespace prefix, since the targets are use directly without installation
target_link_libraries (view_and_value PRIVATE bsoncxx_shared)

Observação

O exemplo anterior usa o destino bsoncxx_shared CMake sem o namespace mongo::. O namespace é adicionado como parte da instalação do módulo CMake, que não é executada nesta abordagem.

Em seguida, execute os seguintes comandos para construir seu projeto:

$ cd /home/user/project1
$ cmake -Bbuild
$ cmake --build build

Esses comandos retornam informações sobre o processo de construção. Após a conclusão da construção, execute o executável produzido na etapa anterior:

$ ./build/view_and_value

A saída se assemelha ao seguinte:

{ "team" : "platforms", "id" : { "$oid" : "67207dcf532837a4470cc090" }, "members" : [ "tyler", "jason", "drew", "sam", "ernie", "john", "mark", "crystal" ] }
Got key, key = team
Got String!
Got key, key = id
Got ObjectId!
Got key, key = members
Got Array!
array element: tyler
array element: jason
array element: drew
array element: sam
array element: ernie
array element: john
array element: mark
array element: crystal
as expected, we have a team
document has 3 keys.
document keys are:
team
id
members

Se o seu projeto não for baseado no CMake, você poderá utilizar o pkg-config para integrar o driver C++ com seu projeto. Como o pkg-config oferece menos flexibilidade do que o CMake, recomendamos o uso da abordagem baseada no CMake quando possível.

Você só pode usar o driver C++ com pkg-config se instalar totalmente o driver.

O código a seguir usa pkg-config para incluir e vincular o driver C++ . Substitua o espaço reservado <path-to-mongo-cxx-driver-sources> pelo local da árvore de origem do driver C++ em seu sistema:

$ c++ /<path-to-mongo-cxx-driver-sources>/examples/bsoncxx/view_and_value.cpp $(pkg-config --cflags libbsoncxx) -I/<path-to-mongo-cxx-driver-sources> $(pkg-config --libs libbsoncxx) -o view_and_value
$ ./view_and_value
{ "team" : "platforms", "id" : { "$oid" : "67207262672b96dc3b0fc150" }, "members" : [ "tyler", "jason", "drew", "sam", "ernie", "john", "mark", "crystal" ] }
Got key, key = team
Got String!
Got key, key = id
Got ObjectId!
Got key, key = members
Got Array!
array element: tyler
array element: jason
array element: drew
array element: sam
array element: ernie
array element: john
array element: mark
array element: crystal
as expected, we have a team
document has 3 keys.
document keys are:
team
id
members

Você pode adaptar a linha de comando anterior para projetos mais complexos ou sistemas de compilação específicos, dependendo de como eles consomem pacotes pkg-config.

Voltar

Configuração e instalação avançadas

Nesta página