Ricerca…


Osservazioni

La principale differenza tra macro e funzioni è che le macro vengono valutate all'interno del contesto corrente, mentre le funzioni aprono un nuovo ambito all'interno di quello corrente. Pertanto, le variabili definite all'interno delle funzioni non sono note dopo che la funzione è stata valutata. Al contrario, le variabili all'interno dei macro sono ancora definite dopo che la macro è stata valutata.

Macro semplice per definire una variabile in base all'input

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})

stamperà

-- foo

mentre

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

stamperà

-- bar

Macro per riempire una variabile di nome dato

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})

che stamperà

-- Foo


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow