Esta página detalha como baixar, descompactar, configurar e construir as bibliotecas libbson e libmongoc a partir de seu código-fonte.
Dica
Informações adicionais
Admoestações (como esta) contêm informações extras e detalhes explicativos que não são necessários para concluir o tutorial, mas podem ser úteis para leitores atentos e usuários mais avançados que desejam uma explicação do significado de determinadas etapas do tutorial.
A seguinte página utiliza algumas variáveis nomeadas para representar informações de configuração, como $VERSION. Você deve escolher valores para essas variáveis antes de iniciar o tutorial. Quando você vir uma variável referenciada em uma etapa do tutorial, substitua seu valor em seu lugar.
Dica
Antes de construir as bibliotecas, verifique se você está executando em uma plataforma compatível. Para obter a lista de plataformas suportadas, consulte a página decompatibilidade do.
Escolha uma versão
Antes de começar, saiba qual versão do mongo-c-driver você estará baixando. Uma lista de versões disponíveis pode ser encontrada na página de tags de repositório do Github. Este tutorial documenta a versão atual do driver, v2.1.2.
Para o restante desta página, $VERSION fará referência ao número da versão do mongo-c-driver que você construirá para este tutorial.
Obtendo a fonte
Obtenha o código-fonte mongo-c-driver de uma das seguintes maneiras:
Clone o repositório usando
git(recomendado). Para obter mais informações,consulte Baixando usando Git.Baixe um arquivo de origem em uma versão específica. Para obter mais informações, consulte Baixando um Arquivo de versão.
Importante
É altamente recomendável que novos usuários usem uma versão estável do driver, em vez de criar a partir de uma ramificação de desenvolvimento. Ao git clone ou baixar um arquivo do repositório, certifique-se de especificar uma tag de versão (por exemplo, com o argumento --branch do Git).
Baixando usando Git
Você pode clonar o repositório do driver C do Github usando Git. As tags Git para versões lançadas recebem o nome da versão para a qual correspondem (por exemplo "2.1.2"). Para clonar o repositório a partir da linha de comando, use o seguinte comando:
$ git clone https://github.com/mongodb/mongo-c-driver.git --branch="$VERSION" "$SOURCE"
Dica
Apesar do nome, você pode usar a opção --branch do comando git-clone para clonar a partir de marcações de repositório.
Baixando um arquivo de versão
Você pode obter um snapshot arquivado do repositório do driver C na página Lançamentos do repositório. Cada versão inclui um arquivo mongo-c-driver-x.y.z.tar.gz, que contém o conjunto mínimo de arquivos necessários para a compilação.
## Download using wget: $ wget "https://github.com/mongodb/mongo-c-driver/archive/refs/tags/$VERSION.tar.gz" \ --output-document="mongo-c-driver-$VERSION.tar.gz" ## Extract using tar: $ tar xf "mongo-c-driver-$VERSION.tar.gz"
Os comandos anteriores criam o diretório mongo-c-driver-$VERSION dentro do diretório em que você os executou, que é a raiz da árvore de origem do driver. Esta documentação refere-se a este diretório como $SOURCE. O diretório $SOURCE contém o arquivo CMakeLists.txt de nível superior.
## Using curl: $ curl "https://github.com/mongodb/mongo-c-driver/archive/refs/tags/$VERSION.tar.gz" \ --output="mongo-c-driver-$VERSION.tar.gz" ## Extract using tar: $ tar xf "mongo-c-driver-$VERSION.tar.gz"
Os comandos anteriores criam o diretório mongo-c-driver-$VERSION dentro do diretório em que você os executou, que é a raiz da árvore de origem do driver. Esta documentação refere-se a este diretório como $SOURCE. O diretório $SOURCE contém o arquivo CMakeLists.txt de nível superior.
## Use Invoke-WebRequest: PS> $url = "https://github.com/mongodb/mongo-c-driver/archive/refs/tags/$VERSION.zip" PS> $file = "mongo-c-driver-$VERSION.zip" PS> Invoke-WebRequest -UseBasicParsing -Uri $url -OutFile $file ## Extract using Expand-Archive: PS> Expand-Archive mongo-c-driver-$VERSION.zip
Os comandos anteriores criam o diretório mongo-c-driver-$VERSION dentro do diretório em que você os executou. O diretório mongo-c-driver-$VERSION contém um segundo diretório mongo-c-driver-$VERSION, que é a raiz da árvore de origem do driver. Esta documentação refere-se a este diretório como $SOURCE. O diretório $SOURCE contém o arquivo CMakeLists.txt de nível superior.
Obtenção de pré-requisitos
Você deve instalar CMake para configurar os projetos libmongoc e libbson. É altamente recomendável que você baixe a versão estável mais recente do CMake disponível para sua plataforma.
Selecione a aba correspondente ao seu sistema operacional e siga as instruções para baixar o CMake:
Baixe o arquivo CMake
.msiou.dmge utilize-o para instalar o CMake.
Visite a página de downloads do CMake
Baixe o script de shell de extração automática, que termina com
.sh.Execute o script usando o utilitário
she passando os argumentos apropriados para executar a instalação. Por exemplo, com o CMake 3.27.0 na plataformax86_64, execute o seguinte comando:sh cmake-3.27.0-linux-x86_64.sh --prefix="$HOME/.local" --exclude-subdir --skip-license Supondo que
$HOME/.local/binesteja na sua lista$PATH, o comandocmakepara 3.27.0 ficará disponível.A opção
--helppode ser passada para o script de shell para obter mais informações.
Esta página pressupõe que cmake está disponível como um comando em sua variável de ambiente do PATH e pode ser executado como "cmake" a partir de uma shell. Você pode testar isso solicitando o --version do CMake a partir da linha de comando, conforme mostrado no código a seguir:
cmake --version cmake version 3.21.4 CMake suite maintained and supported by Kitware (kitware.com/cmake).
Observação
Se você pretende construir somente o libbson , então o CMake será suficiente para a construção. Recursos adicionais do driver C podem exigir a instalação de dependências externas adicionais, mas não nos preocuparemos com eles aqui.
Configuração para libbson
Importante
Que o nome $BUILD seja o caminho $SOURCE/_build. Este será o diretório onde nossos arquivos construídos serão escritos pelo CMake.
Com o diretório de origem para mongo-c-driver em $SOURCE e o diretório de compilação $BUILD, o seguinte comando pode ser executado a partir de uma linha de comando para configurar o projeto com libbson e libmongoc:
$ cmake -S $SOURCE -B $BUILD \ -D CMAKE_BUILD_TYPE=RelWithDebInfo \ -D BUILD_VERSION="$VERSION" \ -D ENABLE_MONGOC=OFF
Se todas as dependências estiverem satisfeitas, o comando acima deverá ser bem-sucedido e terminar com:
$ cmake … ## … (Lines of output) … -- Generating done -- Build files have been written to: $BUILD
Se a configuração falhar com um erro, consulte a saída do CMake para obter mensagens de erro e informações. Certifique-se de que a configuração seja bem-sucedida antes de continuar.
Dica
O que esses argumentos do CMake significam?
O BUILD_VERSION define o número da versão que será incluído nos resultados da compilação. Isso deve ser definido para o mesmo valor que a versão do driver de origem que foi baixado em Obter a fonte.
O argumento ENABLE_MONGOC=OFF desabilitou a construção libmongoc. Veremos isso na próxima seção.
A configuração CMAKE_BUILD_TYPE informa ao CMake qual variante do código será gerada. No caso de RelWithDebInfo, binários otimizados serão produzidos, mas ainda incluirão informações de depuração. O CMAKE_BUILD_TYPE não tem efeito sobre geradores de várias configurações (ou seja, Visual Studio), que dependem da opção --config ao construir/instalar.
Construindo o projeto
Depois de configurar com êxito o projeto, a compilação pode ser executada usando o CMake:
$ cmake --build $BUILD --config RelWithDebInfo --parallel
Se configurado corretamente e todas as dependências estiverem satisfeitas, o comando acima deve continuar para compilar e vincular os componentes configurados. Se o comando acima falhar, é provável que haja um erro com seu ambiente ou você esteja usando uma plataforma não suportada/não testada. Consulte a saída da ferramenta de construção para obter mais informações.
Dica
A opção --config
A opção --config é usada para definir a configuração de compilação a ser usada no caso de geradores de configuração múltipla (ou seja, Visual Studio). Não tem efeito sobre outros geradores, que em vez disso usam CMAKE_BUILD_TYPE.
Instalando os resultados construídos
Seja $PREFIX o caminho $SOURCE/_install. Podemos usar o CMake para instalar os resultados da construção:
$ cmake --install "$BUILD" --prefix "$PREFIX" --config RelWithDebInfo
Este comando instalará os mongo-c-driver resultados da compilação do no $PREFIX diretório .
Dica
A opção --config
A opção --config é usada apenas para geradores de várias configurações (ou seja, Visual Studio) e é ignorado. O valor fornecido para --config deve ser o mesmo que foi fornecido para --config com cmake --build.
Configuração com libmongoc
Se você seguiu as etapas acima a partir de Configurar para libbson, seu resultado final conterá apenas libbson e não a biblioteca completa do driver de banco de dados C. A construção de libmongoc é ativada/desativada usando a variável ENABLE_MONGOC CMake. Execute novamente o CMake, mas defina ENABLE_MONGOC como TRUE:
$ cmake -D ENABLE_MONGOC=ON $BUILD
Se o comando acima for bem-sucedido, o projeto foi reconfigurado para construir com libmongoc. Siga o processo em Construindo o projeto e Instalando os resultados compilados novamente para construir e instalar o libmongoc.
Notas de rodapé
| [1] | Se você deseja configurar e construir o projeto com o Xcode, as ferramentas de linha de comando do Xcode precisam ser instaladas e disponibilizadas no ambiente. Em um ambiente de linha de comando, execute:$PATH. |
| [2] | Se você deseja configurar e construir o projeto usando o Microsoft Visual C++, então o Visual C++ FERRAMENTAS e variáveis de ambiente podem precisar ser definidos ao executar qualquer comando CMake ou build.Em muitos casos, o CMake detectará uma instalação do Visual Studio e carregará automaticamente o próprio ambiente quando é executado. Esta detecção automática pode ser controlada com as opções -G, -T e -A do CMake. A opção -G é a mais significativa, pois seleciona qual versão do Visual Studio será usada. As versões do Visual Studio suportadas dependem da versão do CMake que você instalou. Uma lista de versões do Visual Studio suportadas pode ser encontrada aqui.Para maior controle e mais opções de ferramentas, é recomendável executar comandos de dentro de um Visual Studio Developer PowerShell (preferencial) ou Prompt de comando do desenvolvedor (legado). Para obter mais informações, consulte: Prompt de comando do Visual Studio Developer e PowerShell do Visual Studio e Use o Conjunto de ferramentas do Microsoft C++ a partir da linha de comando nas páginas de documentação do Microsoft Visual Studio. |