Como construir o driver MongoDB C++
Esta solução teve sucesso em uma máquina com as seguintes características:
- Windows XP SP3 32 bits
- Visual Studio Express 2010 (VC 10)
Usei D:\MongoDBcplusplusClient como diretório de trabalho (instalei lá todos os pré-requisitos).
Processo:
- Etapa 1
Baixe o driver MongoDB C++:
https://github.com/mongodb/mongo-cxx-driver
Você pode fazer um clone usando o Git ou baixá-lo como um arquivo .zip (eu fiz o segundo). Você obterá um arquivo como mongo-cxx-driver-legacy.zip. Extraia-o para a pasta mongo-cxx-driver-legacy dentro do seu diretório de trabalho.
- Etapa 2
Baixe os binários do Windows pré-construídos Boost. ATENÇÃO!!! Você deve usar uma versão específica do Boost. No meu caso, a versão 1.52 funcionou. Você pode baixá-lo aqui:
http://boost.teeks99.com/
Eu baixei o exe auto-extraível boost_1_52_0-vc32-bin.exe. Coloque-o em seu diretório de trabalho e execute-o. Ele criará uma pasta (algo como lib32) que conterá os binários boost (arquivos .lib e .dll)
- Etapa 3
Baixe o código-fonte do Boost (arquivos .h). É claro que eles devem ser da mesma versão da Etapa 2. Eu os baixei aqui:
http://sourceforge.net/projects/boost/files/boost/1.52.0/
Você receberá um arquivo boost_1_52_0.zip que pode ser extraído na pasta boost_1_52_0.
- Etapa 4
Baixe o Python. Neste exemplo, baixei a versão 2.7.9 e especificamente o instalador do Windows x86 MSI daqui:
https://www.python.org/downloads/release/python-279/
- Etapa 5
Baixe Scons aqui:
http://www.scons.org/download.php
Baixei o instalador do Windows (scons-2.3.4-setup.exe) e instalei o Scons no diretório Python (no meu caso C:\Python27).
- Etapa 6
Baixe msinttypes aqui:
https://code.google.com/p/msinttypes/
(Você deve incluir esses arquivos de cabeçalho no projeto que usa o driver)
- Etapa 7
Vá para Iniciar->Executar… e na caixa Executar escreva cmd. Na janela do prompt de comando aberta, navegue até a pasta na qual você extraiu o driver mongo na Etapa 1. No meu caso, eu fiz:cd D:\ D:\MongoDBcplusplusClient\mongo-cxx-driver-legacy\mongo-cxx-driver-legacy
- Etapa 8
Construa o driver usando Scons. No diretório que você navegou na Etapa 7, escreva:
scons
--prefix=D:\MongoDBcplusplusClient\mongo-cxx-driver-legacy\mongo-cxx-driver-legacy
--cpppath=D:\MongoDBcplusplusClient\boost_1_52_0\boost_1_52_0
--libpath=D:\MongoDBcplusplusClient\lib32
--win-version-min=xpsp3 instalar
e pressione Enter.
O --prefixo flag especifica o diretório de destino no qual o arquivo .lib do driver será criado, --cpppath especifica a pasta na qual os arquivos de cabeçalho do Boost estão localizados e o --libpath o caminho para os arquivos Boost .lib. Claro que você deve mudar o caminho para o seu. Um arquivo chamado libmongoclient-s.lib será criado no caminho --prefix/lib .Se você quiser construir o driver com depuração habilitada, você deve usar o seguinte comando:
scons
--prefix=D:\MongoDBcplusplusClient\mongo-cxx-driver-legacy\mongo-cxx-driver-legacy
--cpppath=D:\MongoDBcplusplusClient\boost_1_52_0\boost_1_52_0
--libpath=D:\MongoDBcplusplusClient\lib32
--win-version-min=xpsp3
--dbg=na instalação
Um arquivo chamado libmongoclient-sgd.lib será criado no --prefix/lib caminho.
- Etapa 9
No Windows Explorer navegue até a pasta na qual o driver MongoDB C++ está instalado, vá para a subpasta lib (no meu caso era D:\MongoDBcplusClient\mongo-cxx-driver-legacy\mongo-cxx-driver-legacy\lib) e renomeie o arquivo libmongoclient-s.lib para mongoclient.lib e o libmongoclient-sgd.lib para mongoclient-gd.lib .
- Etapa 10
Abra o Visual Studio 2010 Express e abra o projeto no qual você deseja usar o driver MongoDB C++. Você deve especificar as dependências. Clique com o botão direito do mouse no nome do projeto no gerenciador de soluções (coluna da esquerda) e clique em Propriedades. Vá para C/C++ → General e em Additional Include Directories adicione:
a) Diretório de arquivos de cabeçalho Boost (no meu caso D:\MongoDBcplusplusClient\boost_1_52_0\boost_1_52_0)
b) Diretório de arquivos de cabeçalho do driver MongoDB C++ (no meu casoD:\MongoDBcplusplusClient\mongo-cxx-driver-legacy\mongo-cxx-driverlegacy\include)
c) Diretório de arquivos de cabeçalho de tipos Cstdint (no meu caso:\MongoDBcplusplusClient\msinttypes-r26 )
- Etapa 11
Vá para Linker → General e em Additional Library Directories adicione:
a) Diretório de arquivos Boost .lib (no meu caso D:\MongoDBcplusClient\lib32)
b) Diretório de arquivos .lib do driver MongoDB C++ (no meu caso D:\MongoDBcplusplusClient\mongo-cxx-driver-legacy\mongo-cxx-driver-legacy\lib)
Após essas etapas, o projeto que utiliza o driver será compilado com sucesso nas configurações de liberação e depuração.