cmake
Funktionen und Makros
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