조건문 사용 방법
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() 함수를 사용하여 조건문 내부에서 변수 값을 출력함으로써 디버깅할 수 있다.
이렇게 하면 스크립트 실행 중에 변수의 상태를 명확하게 파악할 수 있어, 조건문이 올바르게 평가되는지 확인하는 데 도움이 된다.
관련 자료: