cmake
Функции и макросы
Поиск…
замечания
Основное различие между макросами и функциями заключается в том, что макросы оцениваются в текущем контексте, а функции открывают новую область в текущем контексте. Таким образом, переменные, определенные внутри функций , не известны после того, как функция была оценена. Напротив, переменные внутри макросов все еще определены после оценки макроса.
Простой макрос для определения переменной на основе ввода
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)
Используйте макрос:
set_my_variable("Foo")
message(STATUS ${my_output_variable})
распечатает
-- foo
в то время как
set_my_variable("something else")
message(STATUS ${my_output_variable})
распечатает
-- bar
Макрос для заполнения переменной данного имени
macro(set_custom_variable _OUT_VAR)
set(${_OUT_VAR} "Foo")
endmacro(set_custom_variable)
Используйте его с
set_custom_variable(my_foo)
message(STATUS ${my_foo})
который будет печатать
-- Foo
Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow