개발 라이브러리 & 툴

[MongoDB] 윈도우용 MongoDB C/C++ Driver 컴파일 및 인스톨 하기

하늘흐늘 2021. 10. 7. 13:40
반응형

MongoDB를 C/C++에서 사용하기 위해서는 C용 MongoDB C Driver와 C++용 MongoDB C++ Driver가 있어야 한다. MongoDB C와 C++ Driver는 MongoDB를 사용하기 위한 일종의 라이브러리라고 볼 수 있다. 근데 이 드라이버가 윈도우에서는 MSI나 ZIP파일 형태로 제공되지 않아 소스를 받아서 컴파일 해야 한다. 또한 해당 드라이버는 현재 시점에서 64bit만 지원한다.

여기서는 Visual Studio 이용하여 드라이버를 컴파일 하는 방법을 살펴보기로 하겠다.

1. 윈도우용 CMake를 미리 다운받아 인스톨하여 놓는다. 
참고로 인스톨 전에 기존 버전이 있으면 언인스톨해야 하며 64bit 버전을 인스톨한다.
이때 인스톨된 CMake는 PATH상에 존재하여 어디서나 실행할 수 있는게 좋다.
(https://cmake.org/download/)

2. MongoDB C Driver 인스톨하기 #1: 최신 드라이버 소스를 다운 받아서 압축을 푼다.
현재 최신 버전은 아래 주소의 1.19.1 버전이다.
(https://github.com/mongodb/mongo-c-driver/releases/tag/1.19.1)

3. MongoDB C Driver 인스톨하기 #2: 아래와 같이 스크립트를 실행한다.
아래 스크립트에서 mongo-c-driver-1.19.1는 압축을 푼 폴더를 말한다. 스크립트의 인스톨 폴더는 c:\mongo-c-driver로 지정한 관계로 해당 폴더가 있어야 한다. 다른 곳에 인스톨하고 싶으면 해당 부분을 수정하면 된다.
Visual Studio를 다른 버전으로 하고 싶으면 cmake --help 명령으로 인자 값을 알아낸 후 해당 부분을 수정하면 된다.

cd mongo-c-driver-1.19.1
mkdir cmake-build
cd cmake-build
cmake -G "Visual Studio 15 2017 Win64" "-DCMAKE_INSTALL_PREFIX=C:\mongo-c-driver"  "-DCMAKE_PREFIX_PATH=C:\mongo-c-driver" ..
cmake --build . --config RelWithDebInfo
set CMAKE_INSTALL_PREFIX=c:\mongo-c-driver
cmake --build . --config RelWithDebInfo --target install

(참고자료: Installing the MongoDB C Driver (libmongoc) and BSON library (libbson))

위 과정이 이상없이 끝났으면 c:\mongo-c-driver에 헤더파일들이 있는 include, dll 파일들이 있는 bin, lib 파일들이 있는 lib 폴더가 생긴다. 해당 폴더들을 프로젝트나 실행 파일에서 참조하여 사용하면 된다.

4. MongoDB C++ Driver 인스톨하기 #1: 위의 1~3번 과정을 바탕으로 MongoDB C Driver를 인스톨한다.
MongoDB C++ Driver는 Mongo C Driver에 종속성을 가지는 관계로 Mongo C Driver가 먼저 인스톨 되어 있어야 한다.

5. MongoDB C++ Driver 인스톨하기 #2: 최신 드라이버 소스를 다운 받아서 압축을 푼다.
(https://github.com/mongodb/mongo-cxx-driver/releases)

6. MongoDB C++ Driver 인스톨하기 #3: 아래와 같이 스크립트를 실행한다.
아래 스크립트에서 mongo-cxx-driver-r3.6.6는 압축을 푼 폴더를 말한다. MongoDB C Driver 인스톨 폴더는 mongo-c-driver로 지정하였다. 다른 폴더에 인스톨하였으면 해당 부분을 변경하면 된다. 스크립트의 인스톨 폴더는 c:\mongo-cxx-driver로 지정한 관계로 해당 폴더가 있어야 한다. 다른 곳에 인스톨하고 싶으면 해당 부분을 수정하면 된다.
Visual Studio를 다른 버전으로 하고 싶으면 cmake --help 명령으로 인자 값을 알아낸 후 해당 부분을 수정하면 된다.

cd mongo-cxx-driver-r3.6.6\build
cmake.exe ..  -G "Visual Studio 15 2017 Win64" -DCMAKE_CXX_STANDARD=17 -DCMAKE_CXX_FLAGS="/Zc:__cplusplus" -DCMAKE_PREFIX_PATH=C:\mongo-c-driver -DCMAKE_INSTALL_PREFIX=C:\mongo-cxx-driver
cmake --build .
cmake --build . --target install

(참고자료: mongocxx (v3) > Installing the mongocxx driver > Windows)

위 스크립트 중 cmake.exe . -G...로 시작하는 2번째 명령에서 Release로 빌드하기 위해서는 -DCMAKE_BUILD_TYPE=Release를, 기본 동적 라이브러리 외에 정적 라이브러리도 같이 빌드하기 위해서는 -DBUILD_SHARED_LIBS_WITH_STATIC_MONGOC=ON을 지정하면 된다. 정적 라이브러리만 빌드하기 위해서는 -DBUILD_SHARED_LIBS=False을 지정하면 된다. 불필요한 테스트 관련 프로젝트를 빌드하지 않아 빌드 속도를 올리려면 -DENABLE_TESTS=OFF을 지정하면 된다.
(참고자료: mongocxx (v3)  Installing the mongocxx driver  Advanced Configuration and Installation Options)

위 과정이 이상없이 끝났으면 c:\mongo-cxx-driver에 헤더파일들이 있는 include, dll 파일들이 있는 bin, lib 파일들이 있는 lib 폴더가 생긴다. 해당 폴더들을 프로젝트나 실행 파일에서 참조하여 사용하면 된다.

 

 

반응형