조건문 사용 방법

조건문 기본 개념

CMakeLists.txt에서 조건문은 특정 조건에 따라 빌드 설정을 다르게 적용하기 위해 사용된다. 이 조건문은 if, else, elseif, endif 등의 키워드를 통해 구현된다. 기본적인 형태는 다음과 같다:

if(조건)
    # 조건이 참일 때 실행되는 코드
elseif(다른 조건)
    # 다른 조건이 참일 때 실행되는 코드
else()
    # 모든 조건이 거짓일 때 실행되는 코드
endif()

CMake의 조건문은 주로 변수의 값, 파일의 존재 여부, 컴파일러 종류, 플랫폼 등에 따라 다르게 빌드 설정을 해야 할 때 사용된다.

조건문에서 사용되는 주요 표현식

CMake 조건문에서 자주 사용되는 표현식은 다음과 같다:

  • 변수 검사: 변수가 정의되었는지, 또는 특정 값과 일치하는지를 확인한다.

    if(DEFINED 변수명)
    if(변수명 STREQUAL "값")
  • 파일 검사: 파일이나 디렉토리의 존재 여부를 확인한다.

    if(EXISTS "경로/파일명")
    if(IS_DIRECTORY "경로")
    if(IS_FILE "파일명")
  • 플랫폼 검사: 운영체제나 컴파일러를 확인하여 특정 플랫폼에 맞는 설정을 적용한다.

    if(WIN32)
    if(UNIX)
    if(APPLE)
    if(MSVC)
  • 논리 연산자: 조건을 결합하거나 부정할 때 사용된다.

    if(NOT 조건)
    if(조건1 AND 조건2)
    if(조건1 OR 조건2)

고급 조건문 사용법

조건문은 기본적인 조건 검사를 넘어서 복잡한 빌드 스크립트를 작성하는 데 유용하다.

  • 정규 표현식 사용: 문자열 매칭을 통해 조건을 검사할 수 있다.

  • 조건부 옵션 설정: 특정 조건에 따라 옵션을 활성화하거나 비활성화할 수 있다.

  • 함수 내부에서 조건문 사용: CMake 함수나 매크로 내에서 조건문을 사용해 동적으로 설정을 조정할 수 있다.

  • 정의된 대상에 따라 조건적 빌드 설정: 특정 대상(target)이 존재하는지에 따라 설정을 다르게 할 수 있다.

조건문을 사용한 예제

다음은 실제 프로젝트에서 조건문을 사용하는 예제이다:

이 예제에서는 빌드 타입과 운영체제에 따라 서로 다른 정의와 라이브러리를 설정한다. 이는 멀티플랫폼 프로젝트에서 필수적인 방법이다.

조건문 디버깅

CMake에서 조건문이 예상대로 동작하지 않을 경우, message() 함수를 사용하여 조건문 내부에서 변수 값을 출력함으로써 디버깅할 수 있다.

이렇게 하면 스크립트 실행 중에 변수의 상태를 명확하게 파악할 수 있어, 조건문이 올바르게 평가되는지 확인하는 데 도움이 된다.


관련 자료:

Last updated