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_DIR는 project()가 가장 최근에 호출된 CMakeLists.txt가 있는 디렉토리를 가리킨다.
PROJECT_NAME
project() 명령에 작성한 project name을 포함한다.
Reference
- https://cmake.org/cmake/help/latest/manual/cmake-variables.7.html