Construindo as Bibliotecas de Drivers C a partir da Origem
Nesta página
Esta página detalha como baixar, descompactar, configurar e compilar libbson
e libmongoc
a partir de seu formulário de código-fonte original.
Dica
Informações adicionais
Listas suspensas (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 página a seguir usa algumas "variáveis" nomeadas que você deve decidir antecipadamente. Ao ver esse valor referenciado em uma etapa do tutorial, você deve substituir o valor nessa etapa.
Dica
Veja também:
Antes de construir, você pode verificar se está executando em uma plataforma compatível. Para obter a lista de plataformas compatíveis, consulte a página de suporte da plataforma mongo-c-driver .
Escolha uma versão
Antes de começarmos, 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. (A versão atual escrita para esta documentação é 1.28.0.)
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
Existem dois métodos principais recomendados para obter o código-fonte mongo-c-driver
:
Clone o repositório usando
git
(recomendado). (Veja abaixo)Baixe um arquivo de origem em uma versão específica. (Veja abaixo)
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
Usando Git, o repositório de driver C pode ser clonado a partir da URL GitHub https://github.com/mongodb/mongo-c-driver.git. As tags Git para versões lançadas recebem o nome da versão à qual correspondem (por exemplo, "1.28.0"). Para clonar o repositório usando a linha de comando, o seguinte comando pode ser usado:
$ git clone https://github.com/mongodb/mongo-c-driver.git --branch="$VERSION" "$SOURCE"
Dica
Apesar do nome, o argumento --branch
git-clone
pode ser usado para clonar a partir de marcações de repositório.
Baixando um arquivo de versão
Um snapshot arquivado do repositório pode ser obtido na Página de versões do GitHub . O mongo-c-driver-x.y.z.tar.gz
arquivo anexado a qualquer versão 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"
## 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"
## 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 acima criarão um novo diretório mongo-c-driver-$VERSION
dentro do diretório no qual você executou o comando tar
/ Expand-Archive
(nota: o PowerShell criará um subdiretório intermediário adicional do mesmo nome). Esse diretório é a raiz da árvore de origem do driver (que nos referimos como $SOURCE
nestes documentos). O diretório $SOURCE
deve conter o arquivo CMakeLists.txt
de nível superior.
Obtenção de pré-requisitos
Para construir o projeto, alguns pré-requisitos precisam estar disponíveis.
libmongoc
Os libbson
projetos e usam o CMake para configuração de compilação.
Observação
É altamente recomendável , mas não obrigatório , que você baixe o CMake estável mais recente disponível para sua plataforma.
Dica
Obtendo o CMake mais recente
Uma nova versão estável do CMake pode ser obtida na página de downloads do CMake.
Para Windows e macOS, basta baixar o CMake .msi
/ .dmg
(não o .zip
/ .tar.gz
) e usá-lo para instalar o CMake.
No Linux, baixe o script de shell de auto-extração (terminando com .sh
) e execute-o usando o utilitário sh
, passando os argumentos apropriados para executar a instalação. Por exemplo, com o CMake 3.27.0 na plataforma x86_64
, o seguinte comando pode ser utilizado no script cmake-3.27.0-linux-x86_64.sh
:
$ sh cmake-3.27.0-linux-x86_64.sh --prefix="$HOME/.local" --exclude-subdir --skip-license
Supondo que $HOME/.local/bin
esteja na sua lista $PATH
, o comando cmake
para 3.27.0 ficará disponível.
A opção --help
pode ser passada para o script de shell para obter mais informações.
Para o restante desta página, será presumido que cmake
está disponível como um comando em sua variável de ambiente PATH
e pode ser executado como "cmake
" a partir de um shell. Você pode testar isso solicitando o --version
do CMake a partir da linha de comando:
$ 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 ENABLE_EXTRA_ALIGNMENT=OFF \ -D ENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF \ -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 ENABLE_EXTRA_ALIGNMENT
e o ENABLE_AUTOMATIC_INIT_AND_CLEANUP
fazem parte do mongo-c-driver
e correspondem a funcionalidades obsoletas que são habilitadas somente por padrão para fins de compatibilidade com a ABI. É altamente recomendável desativar esses recursos sempre que possível.
O argumento ENABLE_MONGOC=OFF
desabilitou a construção libmongoc
. Veremos isso na próxima seção.
A CMAKE_BUILD_TYPE
configuração 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 os geradores Multi-Config (ou seja, Visual Studio), que, em vez disso, dependem da --config
opção ao compilar/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
.
Dica
Veja também:
O trecho acima simplesmente instala mongo-c-driver
em um subdiretório do próprio diretório de origem, mas este não é um fluxo de trabalho normal. Quando você se sentir confortável em configurar e criar mongo-c-driver
, a página Como: Instalar libbson/libmongoc a partir da fonte fará um detalhamento das opções de instalação a partir da fonte.
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 as ferramentas do Visual C++ e as variáveis de ambiente podem precisar ser definidas 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. Essa detecção automática pode ser controlada com as opções -G , -T e -A do CMake. A -G opção é 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 desenvolvedor 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. |