CMAKE 문법
소스파일=재료
make파일=레시피
실행파일=요리
컴파일=재료를 레시피에 따라 요리까지
디버깅=똑같이 하는데 레시피에 사용할 수 있다 없다를 갈라준다.
CMake 빌드 스크립트를 작성할 때도 Makefile을 비롯한 여타 스크립트와 마찬가지로 상단에는 설정 변수를 정의하는 명령들을 몰아놓고, 하단에서는 이 설정에 따라 빌드 절차를 결정하도록 구성한다.
SET( <변수명> <값> )
<값>에 공백이 포함되어 있는 경우, 큰따옴표"ㅇㅇㅇ"로 묶어준다.
목록(List)변수 정의
SET(<목록_변수명><항목><항목><항목>...)
<항목>들은 공백문자로 구분합니다. <항목>값에 공백이 포함되어 있는 경우, 역시 큰따옴표로 묶어준다. 목록 변수의 항목들은 기본적으로 세미콜론(;)으로 구분 된다.
변수 참조
변수를 참조하고자 할 때는 다음과 같이 변수명 앞에$를 붙이거나, ${....}로 묶어주면 된다.
많이 쓰이는 커맨드들
add_definitions( -DFOO -DBAR): 이 디렉토리부터 모든 하위디렉토리에 컴파일러에 플래그를 꽂아준다. 전처리기 플래그 추가에 사용하길 권장함.
include_directories(): 컴파일러가 인클루드 파일 찾을 경로(들) 추가
link_directories(): 링커가 라이브러리 찾을 경로(들) 추가. 그러나 드물게 쓰인다(왜?).
find_package(), find_library() 는 절대경로를 리턴해준다. 이 절대경로들을 target_link_libraries()에 직접 넘기면 된다.
find_package(): 외부 프로젝트로부터 세팅을 찾아서 가져온다. 기본적 문법은 find_package(이름)이고 이러면 CMAKE_MODULE_PATH에 있는 경로를 뒤지면서 "Find이름.cmake"을 찾는다. 패키지를 찾아서, 버전 체크하고, 콘솔에 메세지도 찍어준다. 이후에 이름_FOUND 변수가 설정된다. 이 커맨드가 작동하는 모드가 2가지인데, 기본적으로는 Module mode로 작동한다.
find_library(): find_library(이름) 하면 라이브러리를 찾은 뒤 캐시변수 "이름"이 성공/실패 여부를 저장한다.
target_link_libraries(): 주어진 타겟 링킹시에 라이브러리, 플래그를 특정해준다. 여기서 타겟은 add_executable()이나 add_library()로 특정되었어야 한다.
CMakreLists.txt file은 다음과 같다.
cmake_minimum_required (VERSION 2.6)
project (Tutorial)
add_executable (Tutorial tutorial.cxx)
cxx 는 c++라고 적어야 하는데 이전에 이게 안되서 이렇게 적은것 결국 cxx를 보면 c++로 이해하면 될듯.q
댓글
댓글 쓰기