[CMake] 09. 조건문, 반복문 그리고 함수

글쓴이 keunjun 날짜

CMake에서도 일반적인 프로그래밍 언어들처럼 조건문, 반복문 그리고 함수를 사용 할 수 있다. 이번 글에서는 CMake를 더 아름답게, 더 편리하게 만들어주는 조건문, 반복문 그리고 함수에 대해서 알아본다.

조건문, 즉 if() (doc)에 대해서 알아보자. 다른 언어에서 처럼, if() 명령어는 인자로 들어온 값이 참인 경우에 바로 아래 코드로 이동하고 만약에 거짓인 경우에는 else() (doc)로 이동한다. else() 전에 elseif() (doc)가 있는 경우 먼저 인자가 참인지 확인한 후 참인 경우 elseif() 바로 아래 코드로 이동하고 그렇지 않은 경우 그 다음 elseif() 또는 else()로 이동한다. 마지막으로 조건문의 끝을 알리기 위해서 endif()를 쓴다. 조건의 결과가 1, ON, YES, TRUE, Y 또는 0이 아닌 숫자 일 때 참으로 판단하며, 0, OFF, NO, FALSE, N, “” 또는 문자열이 -NOTFOUND로 끝날 때 거짓으로 판단한다.

if(FOO)
    # FOO is TRUE
elseif(BAR)
    # FOO is FALSE but BAR is TRUE
else()
    # FOO and BAR are FALSE
endif()

다른 언어랑 다른 점은 else()와 endif()에 인자를 넣어 줄 수 있는데, 아무거나 넣을 수 있는건 아니고 바로 직전에 쓰인 if()와 같은 인자를 넣어야 한다. 비워 놓는건 괜찮다. 만약에 조건이 여러개 인 경우 AND와 OR로 조건을 이어 붙일 수 있다. 예를 들어,

if(<expr1> AND <expr2>) # 두 조건이 모두 참인 경우 전체가 참
if(<expr1> OR <expr2>) # 두 조건이 중에 하나만 참이면 전체가 참

조건이 거짓일 때 참으로 만들 고 싶으면 NOT을 쓰면 된다.

if(NOT <expr>) # <expr> 조건이 거짓일 때 전체가 참

if()은 특수한 문법과 함께 사용 할 수 있다. 대표적으로 DEFINED와 COMMAND가 있다.

if(DEFINED <name>) # 인자로 주어진 이름을 갖는 변수가 정의 되어 있으면 참
if(COMMAND <name>) # 인자로 주어진 이름을 갖는 함수, 명령어, 매크로가 존재하면 참

위를 이용하여 사용자의 CMake에 쓰고자 하는 함수가 존재하는지 확인 할 수 있다.

카테고리: CMake

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다