리눅스마스터1급: 플랫폼과 컴파일러 독립적인 설정파일사용하는 컴파일과정제어하는 cmake
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 2,805 조회
- 0 추천
- 목록
본문
리눅스마스터1급: 플랫폼과 컴파일러 독립적인 설정파일사용하는 컴파일과정제어하는 cmake
cmake
cmake는 크로스 플랫폼 오픈소스 make 시스템으로서, 간단한 플랫폼과 컴파일러 독립적인 설정 파일을 사용하여 소프트웨어 컴파일 과정을 제어하기 위해 사용된다.
cmake는 선택한 컴파이러 환경에서 사용될 수 있는 makefile들과 작업 공간을 제공한다.
make가 간단한 문법, 매크로 및 레이블을 사용하는 것에 대해 cmake는 변수와 함수를 포함하는 복합적인 문법을 사용하여 비교적 다양하고 구체적인 설정이 가능하도록 한다.
cmake는 리눅스뿐만 아니라 Mac OS X, IRIX, AIX 등의 유닉스, 윈도우즈 등에서 사용할 수 있다.
그리고 cmake는 MySQL 5.5.x부터 make를 대신하여 사용되고 있고 이외에도 MariaDB, KDE, Qt5, libpng, zlib, Blender, KiCad, LLVM 및 Clang 등에서 사용되고 있다.
1) cmake의 설치
cmake는 리눅스 배포판에서 기본 제공하지 않는 경우가 많은데, 이 경우에는 직접 설치해서 사용해야 한다.
다음과 같이 한다.
설치의 예는 “7.1. 웹 관련 서비스” 부분에 기술되어 있다.
|
|
|
| # ./configure
# make
# make install |
|
|
|
|
2) cmake의 문법
프로그램의 소스코드와 함께 CMakeLists.txt 파일을 제공하는데, 이 파일에 포함되는 각각의 명령은 다음과 같은 형태이다.
|
|
|
| command (args ...) |
|
|
|
|
cmake의 기본 데이터 타입은 스트링(string)이고, 스트링의 목록을 지원한다.
각 스트링은 세미콜론(;)에 의해 구분될 수 있다.
다음은 변수 VAR를 a, b, c로 지정한 것인데, 아래와 위의 표현이 모두 동일한 표현이다.
|
|
|
| set (VAR a;b;c) set (VAR a b c) |
|
|
|
|
다음과 같이 변수를 적용해 본다.
다음은 Foo라는 변수를 “a b c”로 지정했고 명령에 이 변수를 적용하여 “command (c b c)”와 동일한 효과를 냈다.
만약 command(“${Foo}”)와 같이 변수를 적용할 때 따옴표를 달면 “a b c”를 하나의 아큐먼트로 인식한다.
|
|
|
| set (Foo a b c) command(${Foo}) |
|
|
|
|
cmake는 if, foreach, while, 매크로(macro) 및 함수(function)를 지원한다.
∙if 문의 예
|
|
|
| # some_command will be called if the variable's value is not: # empty, 0, N, NO, OFF, FALSE, NOTFOUND, or -NOTFOUND. if(var) some_command(...) endif(var) |
|
|
|
|
∙foreach 문의 예
|
|
|
| set(VAR a b c) # loop over a, b,c with the variable f foreach(f ${VAR}) message(${f}) endforeach(f) |
|
|
|
|
∙매크로(macro) 및 함수(function)의 예
|
|
|
| # define a macro hello macro(hello MESSAGE) message(${MESSAGE}) endmacro(hello) # call the macro with the string "hello world" hello("hello world") # define a function hello function(hello MESSAGE) message(${MESSAGE}) endfunction(hello) |
|
|
|
|
그리고 cmake는 Quote, String 및 Escape를 사용할 수 있고, ^, $, ., [ ], [^ ], [-], *, +, ?, ()의 정규 표현식을 지원한다.
이외에 cmake 파일의 구체적인 작성법은 http://www.cmake.org 에서 제공하는 책자, 튜토리얼, FAQ 등을 참조하기 바란다.
관련자료
-
이전
-
다음