CMake tips

spring·2020년 11월 9일
0

x. Visual Studio에서 Debug와 Release Symbol이 같을때.

MSVC++는 Debug와 Release용 라이브러리를 따로 사용해야 한다. 이때, 빌드된 라이브러리들의 이름이 같다면 문제가 발생한다. (겹치므로)

관례적으로 Debug용 dll 이나 lib 뒤에는 d를 붙이는데, CMakelist.txt에 정의되어 있지 않은경우는 아래와 같은 옵션을 추가해 주면 된다.

-DCMAKE_DEBUG_POSTFIX=d

https://github.com/glfw/glfw/issues/875

1. 변수 set

변수는 set으로 만든다. 만약 값에 공백을 넣고 싶다면 앞에 (backslash)를 넣어주어야 한다.
마찬가지로 (backslash)를 쓰고 싶다면 C언어와 같이 2번 써야 한다.

set(BAR C:\\Program\ Files\\a.exe)

2. 개행문제

CMake는 변수 값을 아주 길게 썼을 때 약간의 문제가 발생한다. 바로 자동으로 개행이 추가되는데 왜 그런지는 모르겠다.
이럴 때는 일단 변수를 생성한 뒤 아래의 구문으로 개행을 없애야 한다.

string(REGEX REPLACE "\n$" "" <varname> "${<varname>}")

3. CMD or Shell 구문 실행

execute_process 로 쉘 명령을 실행 할 수 있다.

execute_process(COMMAND cmd /c "dir" WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" OUTPUT_VARIABLE BAR)

위 구문은 dir명령을 PROJECT_SOURCE_DIR 위치에서 실행하고 (결과를 화면에 보여주며) BAR라는 변수에 결과값을 저장한다.

4. File download

아래와 같이 url과 location을 적어주면 간편하게 다운로드 할 수 있다.

file(DOWNLOAD https://github.com/springkim/leveldb/releases/download/bin/7z.dll ${PROJECT_SOURCE_DIR}/boost_build/7z.dll)
profile
Researcher & Developer @ NAVER Corp | Designer @ HONGIK Univ.

0개의 댓글