어떤 프로젝트를 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)