CMAKE_MINIMUM_REQUIRED()
[문법]
cmake_minimum_required(VERSION major.minor[.patch[.tweak]]
[FATAL_ERROR])
[설명]
CMakeLists.txt 파일에 가장 먼저 호출되어야 하는 명령어로, Project name을 명시하는 project() 명령보다 먼저 호출된다. Cmake build를 실행하기 위한 최소 버전을 명시하여 만약 CMake의 현재 버전이 cmake_minimum_required()에 명시된 버전보다 낮다면 build 진행을 멈추고 에러를 출력한다.
ADD_DEFINITIONS()
[문법]
target_include_directories(-DFOO -DBAR ...)
[설명]
현재 디렉토리 및 하위 경로에 대한 컴파일러 명령 행에 전달할 매크로를 추가하는 명령어이다.
예를 들어 ADD_DEFINITIONS(-DFOO=1) 이면, FOO란 매크로 값을 1로 정의하게 된다.
ADD_EXECUTABLE()
[문법]
add_executable(<name> [WIN32] [MACOSX_BUNDLE]
[EXCLUDE_FROM_ALL]
source1 [source2 ...])
[설명]
<name>으로 명명된 실행파일을 생성한다. 이때 build를 위한 source파일들을 source1, source2.. 와 같이 추가한다.
예시로 ADD_EXECUTABLE(a.out a.c b.c c.c d.c) 라 명시하면, a.c, b.c, c.c, d.c 소스파일을 이용하여 a.out이란 실행파일을 생성할 수 있다. source는 List형태로 전달이 가능하기에 AUX_SOURCE_DIRECTORY() 또는 SET() 으로 명시한 이름을 전달할 수도 있다.
ADD_SUBDIRECTORY()
[문법]
add_subdirectory(source_dir [binary_dir][EXCLUDE_FROM_ALL])
[설명]
빌드를 위한 Sub directory를 지정하는 명령어이다. source_dir 는코드 파일과 CMakeLists.txt가 위치한 directory를 명시해준다. [binary_dir]은 출력 파일을 저장할 디렉토리를 지정한다. 상대 경로이면 현재 디렉토리와 관련하여 수행되지만 절대 경로 일 수도 있습니다. [binary_dir]을 지정하지 않으면 상대 경로를 확장하기 전에 source_dir 값이 사용된다 (일반적인 사용법). 현재 입력 파일에서 처리하기 전에 CMake에 의해 지정된 소스 디렉토리의 CMakeLists.txt 파일이 이 명령을 넘어서 계속 처리된다.
ADD_SUBDIRECTORY()
[문법]
add_subdirectory(source_dir [binary_dir][EXCLUDE_FROM_ALL])
[설명]
빌드를 위한 Sub directory를 지정하는 명령어이다. source_dir 는코드 파일과 CMakeLists.txt가 위치한 directory를 명시해준다. [binary_dir]은 출력 파일을 저장할 디렉토리를 지정한다. 상대 경로이면 현재 디렉토리와 관련하여 수행되지만 절대 경로 일 수도 있습니다. [binary_dir]을 지정하지 않으면 상대 경로를 확장하기 전에 source_dir 값이 사용된다 (일반적인 사용법). 현재 입력 파일에서 처리하기 전에 CMake에 의해 지정된 소스 디렉토리의 CMakeLists.txt 파일이 이 명령을 넘어서 계속 처리된다.
AUX_SOURCE_DIRECTORY()
[문법]
aux_source_directory(<dir> <variable>)
[설명]
<dir>에 명시된 모든 source file들의 이름을 <variable>에 리스트로 저장한다.
이 명령을 사용하여 라이브러리 또는 실행 가능한 대상의 소스 파일 목록을 작성하는 것을 피할 수 있다.
위 명령에서 새로운 소스 파일이 추가되었을 때 자동적으로 make 시 확인할 수 있는 방법이 없다. 일반적으로 생성된 빌드 시스템은 CMakeListsts.txt파일이 새 소스를 추가하도록 수정되었으므로 CMake를 다시 실행해야 한다. 이 파일을 수정하지 않고 디렉토리에 추가하면 수동으로 CMake를 다시 실행하여 새 파일을 포함하는 빌드 시스템을 생성해야 한다.
INCLUDE_DIRECTORIES()
[문법]
include_directories([AFTER|BEFORE] [SYSTEM] dir1 [dir2 ...])
[설명]
컴파일러가 컴파일 시 header file을 검색하는 데 사용할 디렉토리 경로를 추가한다.
LINK_LIBRARIES()
[문법]
link_libraries([item1 [item2 [...]]]
[[debug|optimized|general] <item>] ...)
[설명]
나중에 추가된 모든 대상에 라이브러리를 연결합니다. 즉 모든 Target에 공통적으로 적용할 Library를 명시해줍니다. 이 때 -l 은 포함하지 않습니다. 예를 들어 모든 Target이 pthread library를 필요로 한다면 LINK_LIBRARIES(pthread) 로 명시해줍니다.
TARGET_LINK_LIBRARIES()
[문법]
link_libraries(<target> ... <item> ...)
[설명]
위에 설명한 LINK_LIBRARIES와 기능은 같으나 특정 Target에만 설정하는 명령어입니다. 사용법은 동일하나 앞에 Target을 지정해줍니다.
CONFIGURE_FILE()
[문법]
configure_file(<input> <output>
[COPYONLY] [ESCAPE_QUOTES] [@ONLY]
[NEWLINE_STYLE [UNIX|DOS|WIN32|LF|CRLF] ])
[설명]
<input> file을 <output>으로 복사하고 <input> 파일 내용에 @VAR@ 또는 ${VAR} 로 참조되는 변수 값을 대체합니다. 각 변수 참조는 변수의 현재 값으로 대체되거나 변수가 정의되지 않은 경우에는 빈 문자열로 대체됩니다.
[옵션]
@ONLY : 변수 대체를 @VAR@ 형식으로 제한합니다.
COPYONLY : 변수 대체 없이 오직 파일 복사만 이뤄집니다.
TARGET_*
[설명]
특정 Target 별 설정을 위한 명령어들이다. 항상 이 명령어들의 첫 번째 파라미터는 Target name이다.
TARGET_INCLUDE_DIRECTORIES()
[문법]
target_include_directories(<target> [SYSTEM] [BEFORE]
<INTERFACE|PUBLIC|PRIVATE> [items1...]
[<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])
[설명]
Target에 포함될 Source 파일들이 참조하고 있는 Header file을 포함하고 있는 Directory를 명시한다.
여기서 target은 add_executable()이나 add_library()같은 명령어로 생성되어지는 target의 name이다.
'Linux > Command & Tool' 카테고리의 다른 글
[rpm] package file variables (0) | 2017.11.16 |
---|---|
[CMake] CMakeLists.txt 변수 (0) | 2017.11.13 |
프로세스가 사용중인 fd 확인방법 (0) | 2017.11.01 |
Linux hardware info 확인 위한 Command 모음 (1) | 2017.05.14 |
[LinuxCommand] 쉘 커맨드 확인하는 사이트 (0) | 2015.11.19 |