CMake 템플릿 프로젝트

요즘은 Visual Studio에서도 CMake로 프로젝트를 만들다 보니 하나 있어야 하지 않을까 계속 생각만 하다 만들었다. Clion에서는 정말 필요한 것만 써서 간단히 해도 되는데 Visual Studio는 기존 프로젝트와 연동하는 것 때문인지 CMakeLists.txt 외 자체 설정도 해야 하고 좀 복잡하다. 게다가 따로 설정하지 않으면 CMake 빌드를 C:\Users\<사용자계정>\CMakeBuilds에서 한다. 프로젝트 디렉터리로 하면 될 텐데 무슨 이유인지 모르겠다. 그래도 Visual Studio 2019에서는 편집 화면도 있어서 많이 편해졌으니 다행이랄까.

자동으로 만드는 디렉터리만 설명하면 다음과 같다.

  • 빌드: build 디렉터리를 만들어 빌드하든지, Visual Studio나 CLion은 프로젝트 디렉터리 내에 자동으로 빌드용 디렉터리를 만든다.
  • bin: 빌드한 실행 파일 등 결과물 출력 디렉터리.
  • lib: 빌드한 lib 파일 출력 디렉터리. dll 파일도 이 디렉터리에 출력한다.

기본으로 추가한 서드 파티 라이브러리는 다음과 같다.

  • Asio C++
  • Boost C++ Libraries
  • Catch 2, Trompeloeil
  • Flatbuffers
  • Google test, mock
  • Spdlog
  • Yaml-cpp

취향 대로 google test와 google mock 또는 Catch 2와 Trompeloeil를 쓰면 된다. 각 저장소에 접속해 다운로드 후 빌드까지 하므로 처음엔 시간이 좀 걸린다. CMakeLists.txt 파일에 주석으로 표시해 뒀으니 필요 없는 것은 삭제하면 된다. 서드 파티 라이브러리는 옵션으로 필요한 것만 골라 쓸 수 있다. 그외 내용은 test 디렉터리의 예제 참고.

Boost 라이브러리를 쓸 때는 다음처럼 한다.

  • Boost 라이브러리를 설치한 디렉터리 구조는 다음과 같아야 한다.
    boost directory structure
  • Boost 루트 디렉터리의 전체 경로를 BOOST_HOME 변수에 설정한다.
  • DLL을 사용해 동적 링크를 하려면 BOOST_DYN_LINK변수를 설정한다.

아직 CMake를 깊게는 모르지만 프로젝트 구성할 때 바로 가져다 쓸 정도는 되니 일단 만족. 나머지는 차차 알아가는 걸로. 저장소는 아래와 같다.

 

Notes:
1. Visual Studio에서는 CMakeSettings.json 파일에서 설정하면 된다.
2. 예를 들면, C:/Libs/boost_1_70_0
Visual Studio에서는 CMakeSettings.json 파일에서 설정하면 된다.
예를 들면, C:/Libs/boost_1_70_0

You may also like...