CMake 는 빌드 파일을 생성해주는 프로그램. 다시 말해 CMake 를 통해서 프로젝트를 빌드를 하는 것이 아니라, CMake 를 통해서 빌드 파일을 생성하면 빌드 프로그램을 통해서 프로젝트를 빌드 하는 것.
CMake 를 사용하는 모든 프로젝트에는 반드시 프로젝트 최상위 디렉토리에 CMakeLists.txt 파일이 있어야 한다.
CMakeLists.txt 최상단에는 해당 프로젝트에서 사용할 CMake 의 최소 버전을 명시해야함
예) cmake_minimum_required(VERSION 2.8)
add_executable (<실행 파일 이름> <소스1> <소스2> ... <소스들>)
CMake 에서 실행 파일을 생성하기 위해서는 위와 같이 add_executable 을 사용하면 된다.
target_compile_options(<실행 파일 이름> PUBLIC <컴파일 옵션1> <컴파일 옵션2> ...)
만약에 컴파일 옵션을 지정하고 싶다면 target_compile_options 명령을 사용하면 된다.
예를들어 target_compile_options(program PUBLIC -Wall -Werror)
=> 위 경우 program 을 빌드할 때 컴파일 옵션으로 -Wall (모든 경고 표시) 과 -Werror (경고는 컴파일 오류로 간주) 을 준다는 의미
target_include_directories(<실행 파일 이름> PUBLIC <경로 1> <경로 2> ...)
컴파일러는 #include <> 의 형태로 되는 헤더 파일들은 시스템 경로에서 찾고, #include "" 의 형태로 된 헤더 파일의 경우는 따로 지정하지 않는 이상 현재 코드의 위치를 기준으로 찾는다.
하지만 경우에 따라서 헤더 파일들을 다른 곳에 위치시키는 경우가 있는데 컴파일러가 해당 파일들을 찾기 위해서는 컴파일 시에 따로 경로를 지정해줘야 한다.
프로젝트 구조가 위와 같을때, 그냥 컴파일 하면 아래와 같은 에러가 발생한다.
target_include_directories(program PUBLIC ${CMAKE_SOURCE_DIR}/includes)
위와 같이, CMakeLists.txt 에 includes 디렉토리를 헤더 파일 경로 탐색 시 확인해라라고 알려줄 수 있다.
이때, ${CMAKE_SOURCE_DIR} 은 CMake 에서 기본으로 제공하는 변수로, 최상위 CMakeLists.txt, 즉 cmake .. 할 때 읽어들이는 CMakeLists.txt 의 경로를 의미.
CMake 문법에서 Variables을 3가지 Type으로 구분할 수 있다.
Regular Variables은 CMake에서 사용되는 일반적인 변수를 지칭.
Cache Variables로 선언된 변수는 CMakeCache.txt 파일에 정보를 저장. 이는 Configure Step에서 생성되는 파일이며, 재사용이 가능하며 global하게 사용될 수 있음을 의미.
주의 : Variable을 찾을때 current scope에서 Variable을 우선하여 찾고, 찾지 못하면 Cache에서 찾음
Linux에서 환경변수
환경변수 지역설정
$ export coffee="Americano"
$ echo $coffee
Americano
환경변수 전역설정
// 환경변수를 모든 터미널마다, 즉, 전역으로 설정 -> bashrc 파일에 추가해주면 된다.
echo "export coffee="Americano">>~/.bashrc
CMake 에서는 $ENV{ ... } 를 통해 환경변수를 읽어들일 수 있다.
cmake_minimum_required(VERSION 2.8)
project(foo NONE)
message("Environment variable USERNAME: $ENV{USERNAME}")
https://leeminju531.tistory.com/46
https://gist.github.com/luncliff/6e2d4eb7ca29a0afd5b592f72b80cb5c