수색…


비고

매크로기능 사이의 주요한 차이는 기능이 현재 하나에 새로운 범위를 열 때 매크로 현재 컨텍스트 내에서 평가되는 것이다. 따라서 함수 가 정의 된 후에는 함수 내에 정의 된 변수를 알 수 없습니다. 반대로 매크로 내의 변수는 매크로가 평가 된 후에도 정의됩니다.

입력을 기반으로 변수를 정의하는 단순 매크로

macro(set_my_variable _INPUT)
  if("${_INPUT}" STREQUAL "Foo")
    set(my_output_variable "foo")
  else()
    set(my_output_variable "bar")
  endif()
endmacro(set_my_variable)

매크로 사용 :

set_my_variable("Foo")
message(STATUS ${my_output_variable})

인쇄 할 것이다.

-- foo

동안

set_my_variable("something else")
message(STATUS ${my_output_variable})

인쇄 할 것이다.

-- bar

주어진 이름의 변수를 채우기위한 매크로

macro(set_custom_variable _OUT_VAR)
  set(${_OUT_VAR} "Foo")
endmacro(set_custom_variable)

함께 사용

set_custom_variable(my_foo)
message(STATUS ${my_foo})

어떤 것이 인쇄 될 것인가?

-- Foo


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow