Recherche…


Remarques

La principale différence entre les macros et les fonctions est que les macros sont évaluées dans le contexte actuel, tandis que les fonctions ouvrent une nouvelle étendue au sein du contexte actuel. Ainsi, les variables définies dans les fonctions ne sont pas connues après l’évaluation de la fonction. Au contraire, les variables au sein des macros sont toujours définies après évaluation de la macro.

Macro simple pour définir une variable en fonction de l'entrée

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)

Utilisez la macro:

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

imprimera

-- foo

tandis que

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

imprimera

-- bar

Macro pour remplir une variable de prénom

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

Utilisez-le avec

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

qui imprimera

-- Foo


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow