어떤 프로젝트를 cmake를 이용하여 관리 및 빌드하고자 할때, CMakeLists.txt
를작성 시 자주 사용되는 cmake 기본 명령어들이 있다.
(Root)
|- CMakeLists.txt
|- README.md
|- [src]
| |- CMakeListst.txt
| |- foo.cpp
| |- poo.cpp
| |- main.cpp
|- [include]
| |- foo.h
| |- poo.h
|- [cmake]
| |- options.cmake
이런 구조를 가지는 프로젝트 폴더가 있다고 할 때, CMakeLists.txt는 아래와 같다.
# [/CMakeListst.txt]
cmake_minimum_required(VERSION 3.3)
project(foo CXX)
# -> 'foo'라는 project를 정의한다.
# cmake files
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
include(options)
# -> project 설정관련 전반 .cmake 파일들을 include한다
# build configure
set(CMAKE_BUILD_TYPE Debug)
set(CMAKE_VERBOSE_MAKEFILE true)
# -> build 타입및 compile 관련 설정
# -> header파일들을 include paht에 포함시키고 src 폴더내의 CMakeLists.txt를 수행
include_directories(${CMAKE_CURRENT_LIST_DIR}/include)
add_subdirectory(src)
src폴더 내, CMakeLists.txt파일은
# [src/CMakeListst.txt]
# src files..
set(SRC_PATH
${CMAKE_CURRENT_LIST_DIR}/main.cpp
${CMAKE_CURRENT_LIST_DIR}/foo.cpp
${CMAKE_CURRENT_LIST_DIR}/poo.cpp)
set(OUTPUT_EFL test.out)
# -> build할 파일들을 SRC_PATH 변수에 담는다
# generate executable file
add_executable(${OUTPUT_ELF} ${SRC_PATH}) # -> executable 파일을 생성
taget_link_libraries(${OUTPUT_ELF} libs) # -> 라이브러리 링크
file(MAKE_DIRECTORY ${CMAKE_SOURCE_DIR}/install) # -> install 폴더 생성
# install 명령 수행
install(TARGETS ${OUTPUT_ELF} DESTINATION ${CMAKE_SOURCE_DIR}/install)