MSVC++는 Debug와 Release용 라이브러리를 따로 사용해야 한다. 이때, 빌드된 라이브러리들의 이름이 같다면 문제가 발생한다. (겹치므로)
관례적으로 Debug용 dll 이나 lib 뒤에는 d를 붙이는데, CMakelist.txt에 정의되어 있지 않은경우는 아래와 같은 옵션을 추가해 주면 된다.
-DCMAKE_DEBUG_POSTFIX=d
https://github.com/glfw/glfw/issues/875
변수는 set으로 만든다. 만약 값에 공백을 넣고 싶다면 앞에 (backslash)를 넣어주어야 한다.
마찬가지로 (backslash)를 쓰고 싶다면 C언어와 같이 2번 써야 한다.
set(BAR C:\\Program\ Files\\a.exe)
CMake는 변수 값을 아주 길게 썼을 때 약간의 문제가 발생한다. 바로 자동으로 개행이 추가되는데 왜 그런지는 모르겠다.
이럴 때는 일단 변수를 생성한 뒤 아래의 구문으로 개행을 없애야 한다.
string(REGEX REPLACE "\n$" "" <varname> "${<varname>}")
execute_process
로 쉘 명령을 실행 할 수 있다.
execute_process(COMMAND cmd /c "dir" WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" OUTPUT_VARIABLE BAR)
위 구문은 dir명령을 PROJECT_SOURCE_DIR
위치에서 실행하고 (결과를 화면에 보여주며) BAR라는 변수에 결과값을 저장한다.
아래와 같이 url과 location을 적어주면 간편하게 다운로드 할 수 있다.
file(DOWNLOAD https://github.com/springkim/leveldb/releases/download/bin/7z.dll ${PROJECT_SOURCE_DIR}/boost_build/7z.dll)