cmake
Functies en macro's
Zoeken…
Opmerkingen
Het belangrijkste verschil tussen macro's en functies is dat macro's worden geëvalueerd in de huidige context, terwijl functies een nieuw bereik openen in de huidige context. Variabelen die binnen functies zijn gedefinieerd , zijn dus niet bekend nadat de functie is geëvalueerd. Integendeel, variabelen in macro's worden nog steeds gedefinieerd nadat de macro is geëvalueerd.
Simple Macro om een variabele te definiëren op basis van invoer
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)
Gebruik de macro:
set_my_variable("Foo")
message(STATUS ${my_output_variable})
zal afdrukken
-- foo
terwijl
set_my_variable("something else")
message(STATUS ${my_output_variable})
zal afdrukken
-- bar
Macro om een variabele met een bepaalde naam te vullen
macro(set_custom_variable _OUT_VAR)
set(${_OUT_VAR} "Foo")
endmacro(set_custom_variable)
Gebruik het met
set_custom_variable(my_foo)
message(STATUS ${my_foo})
die zal afdrukken
-- Foo
Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow