조건문 기본 개념

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

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

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

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

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

고급 조건문 사용법

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

if(조건) set(OPTION_NAME ON) endif() ```

조건문을 사용한 예제

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

if(CMAKE_BUILD_TYPE STREQUAL "Debug")
    add_definitions(-DDEBUG_MODE)
    message(STATUS "디버그 모드로 빌드 중이다.")
else()
    add_definitions(-DNDEBUG)
    message(STATUS "릴리즈 모드로 빌드 중이다.")
endif()

if(WIN32)
    set(OS_SPECIFIC_LIBS ws2_32)
elseif(UNIX)
    set(OS_SPECIFIC_LIBS pthread)
endif()

target_link_libraries(내_타겟 ${OS_SPECIFIC_LIBS})

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

조건문 디버깅

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

if(NOT DEFINED 변수명)
    message(STATUS "변수명이 정의되지 않았다.")
endif()

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


관련 자료: - CMake 공식 문서: 조건문 사용법 - CMake tutorial