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