Szukaj…


Uwagi

Główną różnicą między makrami a funkcjami jest to, że makra są oceniane w bieżącym kontekście, podczas gdy funkcje otwierają nowy zakres w bieżącym. Zatem zmienne zdefiniowane w funkcjach nie są znane po ich ocenie. Przeciwnie, zmienne w makrach są nadal definiowane po ocenie makra.

Proste makro do zdefiniowania zmiennej na podstawie danych wejściowych

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)

Użyj makra:

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

wydrukuje

-- foo

podczas

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

wydrukuje

-- bar

Makro do wypełnienia zmiennej o podanej nazwie

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

Używaj go z

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

który wydrukuje

-- Foo


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow