Buscar..


Observaciones

La principal diferencia entre las macros y las funciones es que las macros se evalúan dentro del contexto actual, mientras que las funciones abren un nuevo alcance dentro del actual. Por lo tanto, las variables definidas dentro de las funciones no se conocen después de que la función ha sido evaluada. Por el contrario, las variables dentro de las macros todavía se definen después de que se haya evaluado la macro.

Macro simple para definir una variable basada en la entrada

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)

Usa la macro:

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

imprimirá

-- foo

mientras

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

imprimirá

-- bar

Macro para llenar una variable de nombre dado

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

Usalo con

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

que se imprimirá

-- Foo


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow