CMake - 제어문

mohadang·2022년 8월 11일
0

CMake

목록 보기
10/24
post-thumbnail

if

# script.cmake

cmake_minimum_required(VERSION 3.1)

if(TRUE)
  message("cond 1")  # 실행
endif()

if(FALSE)
  message("cond 2")
endif()

if(YES)
  message("cond 3")  # 실행
endif()

if(NO)
  message("cond 4")
endif()

if(ON)
  message("cond 5")  # 실행
endif()

if(OFF)
  message("cond 6")
endif()

set(A "YES")
set(B "NO")

if(A)
  message("cond 7")  # 실행
endif()

if(B)
  message("cond 8")
endif()

CMP0054

# 문자열 검사 1

set(A "")
if(A STREQUAL "")    # 변수를 사용하여 비교
  message("Value of A is empty string")     # 출력
endif()
문자열 검사 2
set(A "X")    # A 변수 선언
set(B "A")    # A 변수 이름을 B 변수에 저장
if(${B} STREQUAL "X")    # ${B} -> A 해석으로 A 변수 접근하여 문자열 "X" 비교
  message("Value of ${B} is an empty string")    # ${B} -> A 해석하여 출력
endif()
  • CMP0054 가 OLD로 설정 되어 있거나 CMake 3.1보다 낮은 경우 " 은 무시된다.
# cmake_minimum_required(VERSION 2.8) 일경우

cmake_minimum_required(VERSION 2.8)
set(A "X")
set(B "A")
if("${B}" STREQUAL "X")
  # 출력 되지만 CMP0054 정잭 관련 경고도 출력
  message("Value of ${B} is an empty string")    
endif()
# cmake_minimum_required(VERSION 3.2) 일경우

cmake_minimum_required(VERSION 3.2)
set(A "X")
set(B "A")
if("${B}" STREQUAL "X")   # 문자열 "${B}" 와 "X"를 비교
  message("Value of ${B} is an empty string")    # 출력 안됨
endif()
  • "를 사용하여 변수 이름을 사용하지 않도록 주의 해야한다.
cmake_minimum_required(VERSION 2.8)
# cmake_minimum_required(VERSION 3.2)

set("Jane Doe" "")    # " 를 사용한 변수 이름들
set("xJane Doe" "x")
set("!Jane Doe" "!")
set(" Jane Doe" " ")

set(A "Jane Doe")

message("A = ${A}")             # A = Jane Doe

if("x${A}" STREQUAL "x")
  message("A is empty (1)")     # VERSION 2.8 일 경우 출력, " 가 무시되어서
endif()

if("!${A}" STREQUAL "!")
  message("A is empty (2)")     # VERSION 2.8 일 경우 출력
endif()

if(" ${A}" STREQUAL " ")
  message("A is empty (3)")     # VERSION 2.8 일 경우 출력
endif()
profile
mohadang

0개의 댓글