Etc.,  Programming

CMake Pre-defined Variables

CMake에는 미리 정의된 변수들이 존재한다. 이번 포스팅에선 대표적으로 사용되는 변수를 소개한다.

CMAKE_COMMAND

cmake 명령어 자체를 수행하고자 할 때 사용한다. 따라서 해당 변수 ${CMAKE_COMMAND}에는 cmake binary 위치가 저장된다. 아래와 같이 사용이 될 수 있다.

# CMakeLists.txt
add_custom_target(test
    COMMAND           
    ${CMAKE_COMMAND} -E echo "[Dummy] test is done, cmake path: ${CMAKE_COMMAND}"
)

CMAKE_SOURCE_DIR

가장 최상단의 source tree의 경로를 나타낸다. 즉, 최상단에 위치한 CMakeLists.txt의 경로를 의미한다. 이 변수는 add_subdirectory()를 통해 다른 서브 디렉토리의 CMakeLists.txt가 수행되더라도 변경되지 않는다.

CMAKE_CURRENT_SOURCE_DIR

CMake에 의해서 현재 처리 중인 CMakeLists.txt가 존재하는 경로를 나타낸다. 이는 add_subdirectory()로 새로운 CMakeLists.txt가 수행될 때 업데이트 된다. 만약 수행 중인 CMakeLists.txt가 종료되면 다시 이전 경로로 돌아가게 된다.

CMAKE_BINARY_DIR

가장 최상단의 build tree의 경로다. CMAKE_SOURCE_DIR와 마찬가지로 이 변수는 절대 변경되지 않는다.

CMAKE_CURRENT_BINARY_DIR

현재 수행 중인 CMakeLists.txt 에 대응되는 빌드 디렉토리의 경로를 나타낸다. 이 경로 역시 add_subdirectory()가 호출되어 새로운 CMakeLists.txt가 수행될 때 업데이트되며, 종료될 때 다시 이전 경로로 복구된다.

PROJECT_SOURCE_DIR

CMAKE_SOURCE_DIR와 혼동될 수 있는데, PROJECT_SOURCE_DIRproject()가 가장 최근에 호출된 CMakeLists.txt가 있는 디렉토리를 가리킨다.

PROJECT_NAME

project() 명령에 작성한 project name을 포함한다.

Reference

  1. https://cmake.org/cmake/help/latest/manual/cmake-variables.7.html

Leave a Reply

Your email address will not be published. Required fields are marked *