function
Начать запись функции для последующего вызова в качестве команды:
function(<name> [arg1 [arg2 [arg3 ...]]]) COMMAND1(ARGS ...) COMMAND2(ARGS ...) ... endfunction(<name>)
Определите функцию с именем <name>, которая принимает аргументы с именами arg1, arg2, arg3, (…). Команды, перечисленные после функции, но перед соответствующим endfunction(), не вызываются до тех пор, пока не вызвана функция. При вызове команды, записанные в функции, сначала модифицируются заменой формальных параметров (${arg1}) на переданные аргументы, а затем вызываются как обычные команды. Помимо ссылки на формальные параметры, можно ссылаться на переменную ARGC, которая будет установлена в количество переданных в функцию аргументов, а также на ARGV0, ARGV1, ARGV2, …, которые будут содержать фактические значения переданных аргументов. Это позволяет создавать функции с необязательными аргументами. Кроме того, ARGV содержит список всех переданных в функцию аргументов, а ARGN содержит список аргументов, следующих за последним ожидаемым аргументом. Обращение к аргументам ARGV#, выходящим за пределы ARGC, имеет неопределенное поведение. Проверка того, что ARGC больше #, является единственным способом гарантировать, что ARGV# был передан в функцию как дополнительный аргумент.
Функция открывает новую область видимости: см. set(var PARENT_SCOPE) для подробностей.
См. документацию команды cmake_policy() для поведения политик внутри функций.
© 2000–2019 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.13/command/function.html