Suche…


Bemerkungen

Der Hauptunterschied zwischen Makros und Funktionen besteht darin, dass Makros im aktuellen Kontext ausgewertet werden, während Funktionen einen neuen Bereich im aktuellen Kontext öffnen. Daher sind innerhalb von Funktionen definierte Variablen nach Auswertung der Funktion nicht bekannt. Im Gegensatz dazu werden Variablen innerhalb von Makros noch definiert, nachdem das Makro ausgewertet wurde.

Einfaches Makro zum Definieren einer Variablen basierend auf der Eingabe

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)

Verwenden Sie das Makro:

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

wird drucken

-- foo

während

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

wird drucken

-- bar

Makro, um eine Variable mit dem angegebenen Namen zu füllen

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

Verwenden Sie es mit

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

was gedruckt wird

-- Foo


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow