[etc] CMake로 프로젝트 생성 및 빌드

모 3D 프로젝트를 CMake로 생성하다 막혔던 부분 및 해결법을 남긴다.

1. 실행하고 싶은 프로젝트를 받는다.
zip이나 tar로 제공되어 있다면 브라우저 상에서 받아서 압축을 풀면 된다.
git에 올라와 있다면 cmd 에서 git clone --recursive https:// ...... /xxx.git 같은 식으로 받을 수 있다.(--recursive 옵션은 관련 라이브러리까지 모두 복사하는 거 같은데..) 커맨드로 생성하고 싶으면 mkdir build && cd build같은 커맨드로 빌드할 폴더를 만들어놓는게 편하다.

2. CMake를 구동하기 전 먼저 Readme등을 확인해서 구동 환경을 체크한다.
특히 IDE는 뭘 쓰고, x86를 쓰는지 x64를 쓰는지, Boost는 버전 몇을 쓰고.. 이런 것들이 맞지 않으면 생성은 제대로 되도 빌드가 안되는 경우가 부지기수니 꼭 체크해야 한다.

3. 구동 환경에서 요구하는 라이브러리를 모두 설치한다.
예)
OpenCV : CV 공식 사이트(http://opencv.org/releases.html) 에서 다운로드 및 인스톨
Boost : 소스포지 부스트 페이지(https://sourceforge.net/projects/boost/files/boost-binaries/) 에서 VS 버전에 맞는 버전을 다운로드 및 인스톨한다.(ex : VS 2015 -> Visual Studio 14 2015)

라이브러리 중에서는 CMake로 생성이 필요한 라이브러리도 있으니, Readme등을 확인해서 올바르게 인스톨하도록 한다.

4. CMake로 Configure & Generate
gui환경의 CMake에선 Browse Source에서 CMakeList가 포함된 폴더를 지정해주면 되고,
cmd에서 생성할 경우 cmake -G "IDE명 및 버전(ex: Visual Studio 14 2015)" ../CMakeList가 포함된 폴더명 -DCMAKE_INSTALL_PREFIX=../install/ 를 입력한다.
문제가 없으면 바로 빌드( 5.) 단계로 넘어간다.
문제가 발생할 경우 4.1로 넘어간다.

4.1 CMakeCache.txt 혹은 CMakeList.txt 에서 라이브러리 폴더를 지정

Boost_DIR : NOTFOUND로 되어있어도 딱히 생성시나 빌드시 문제는 없었다.

//Boost filesystem library (debug)
Boost_FILESYSTEM_LIBRARY_DEBUG:FILEPATH=C:/local/boost_1_64_0/lib32-msvc-14.0/boost_filesystem-vc140-mt-gd-1_64.lib

//Boost filesystem library (release)
Boost_FILESYSTEM_LIBRARY_RELEASE:FILEPATH=C:/local/boost_1_64_0/lib32-msvc-14.0/boost_filesystem-vc140-mt-1_64.lib

//Path to a file.
Boost_INCLUDE_DIR:PATH=C:/local/boost_1_64_0

//Boost library directory DEBUG
Boost_LIBRARY_DIR_DEBUG:PATH=C:/local/boost_1_64_0/lib32-msvc-14.0

//Boost library directory RELEASE
Boost_LIBRARY_DIR_RELEASE:PATH=C:/local/boost_1_64_0/lib32-msvc-14.0

//Boost program_options library (debug)
Boost_PROGRAM_OPTIONS_LIBRARY_DEBUG:FILEPATH=C:/local/boost_1_64_0/lib32-msvc-14.0/boost_program_options-vc140-mt-gd-1_64.lib

//Boost program_options library (release)
Boost_PROGRAM_OPTIONS_LIBRARY_RELEASE:FILEPATH=C:/local/boost_1_64_0/lib32-msvc-14.0/boost_program_options-vc140-mt-1_64.lib

//Boost system library (debug)
Boost_SYSTEM_LIBRARY_DEBUG:FILEPATH=C:/local/boost_1_64_0/lib32-msvc-14.0/boost_system-vc140-mt-gd-1_64.lib

//Boost system library (release)
Boost_SYSTEM_LIBRARY_RELEASE:FILEPATH=C:/local/boost_1_64_0/lib32-msvc-14.0/boost_system-vc140-mt-1_64.lib

그 밖에 CV나 eigen등의 라이브러리는 PATH에 CMakeList가 포함된 폴더를 지정하면 된다.

5. 생성된 .sln 파일 등을 오픈해서 빌드
빌드 도중 에러가 나면 2.를 다시 보고 3. 혹은 4.1이 올바르게 되었는지 체크한다.

댓글