Sök…


Anmärkningar

Huvudskillnaden mellan makron och funktioner är att makron utvärderas inom det aktuella sammanhanget, medan funktioner öppnar ett nytt omfång inom det nuvarande. Således är variabler definierade inom funktioner inte kända efter att funktionen har utvärderats. Tvärtom, variabler inom makron definieras fortfarande efter att makroen har utvärderats.

Enkel makro för att definiera en variabel baserad på 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)

Använd makro:

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

kommer att skriva ut

-- foo

medan

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

kommer att skriva ut

-- bar

Makro för att fylla en variabel med förnamnet

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

Använd den med

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

som kommer att skriva ut

-- Foo


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow