Spec-Zone.ru › CMake 3.7

cmake_parse_arguments

cmake_parse_arguments предназначен для использования в макросах или функциях для разбора аргументов, переданных этому макросу или функции. Он обрабатывает аргументы и определяет набор переменных, которые содержат значения соответствующих опций.

cmake_parse_arguments(<prefix> <options> <one_value_keywords>
                      <multi_value_keywords> args...)

cmake_parse_arguments(PARSE_ARGV N <prefix> <options> <one_value_keywords>
                      <multi_value_keywords>)

Первый вариант обрабатывает аргументы, переданные в args.... Это можно использовать как в macro(), так и в function().

Вариант PARSE_ARGV предназначен только для использования в теле function(). В этом случае аргументы, которые разбираются, берутся из переменных ARGV# вызывающей функции. Разбор начинается с N-го аргумента, где N — целое без знака. Это позволяет значениям содержать специальные символы, такие как ;.

Аргумент <options> содержит все опции для соответствующего макроса, т.е. ключевые слова, которые можно использовать при вызове макроса без значения, например, ключевое слово OPTIONAL команды install().

Аргумент <one_value_keywords> содержит все ключевые слова для этого макроса, за которыми следует одно значение, например, ключевое слово DESTINATION команды install().

Аргумент <multi_value_keywords> содержит все ключевые слова для этого макроса, за которыми могут следовать более одного значения, например, ключевые слова TARGETS или FILES команды install().

Примечание

Все ключевые слова должны быть уникальными. То есть каждое ключевое слово должно быть указано только один раз в <options>, <one_value_keywords> или <multi_value_keywords>. Будет выведено предупреждение, если уникальность нарушена.

По завершении, для каждого ключевого слова, перечисленного в <options>, <one_value_keywords> и <multi_value_keywords>, будет определена переменная, состоящая из заданного <prefix> и "_" и имени соответствующего ключевого слова. Эти переменные будут содержать соответствующее значение из списка аргументов. Для ключевых слов <options> это будет TRUE или FALSE.

Все оставшиеся аргументы собираются в переменной <prefix>_UNPARSED_ARGUMENTS, что позволяет проверить, был ли ваш макрос вызван с нераспознанными параметрами.

В качестве примера представлен макрос my_install(), принимающий аргументы, аналогичные команде install():

function(MY_INSTALL)
    set(options OPTIONAL FAST)
    set(oneValueArgs DESTINATION RENAME)
    set(multiValueArgs TARGETS CONFIGURATIONS)
    cmake_parse_arguments(MY_INSTALL "${options}" "${oneValueArgs}"
                          "${multiValueArgs}" ${ARGN} )

    # ...

Предположим, что my_install() был вызван следующим образом:

my_install(TARGETS foo bar DESTINATION bin OPTIONAL blub)

После вызова cmake_parse_arguments макрос установит следующие переменные:

MY_INSTALL_OPTIONAL = TRUE
MY_INSTALL_FAST = FALSE (was not used in call to my_install)
MY_INSTALL_DESTINATION = "bin"
MY_INSTALL_RENAME = "" (was not used)
MY_INSTALL_TARGETS = "foo;bar"
MY_INSTALL_CONFIGURATIONS = "" (was not used)
MY_INSTALL_UNPARSED_ARGUMENTS = "blub" (nothing expected after "OPTIONAL")

Затем вы можете продолжить и обработать эти переменные.

Ключевые слова завершают списки значений, например, если сразу после одного_ключевое_слово_с_одним_значением следует другое распознанное ключевое слово, это интерпретируется как начало новой опции. Например, my_install(TARGETS foo DESTINATION OPTIONAL) приведет к тому, что MY_INSTALL_DESTINATION будет установлено в "OPTIONAL", но так как OPTIONAL само по себе является ключевым словом, MY_INSTALL_DESTINATION будет пустым, а поэтому MY_INSTALL_OPTIONAL будет установлено в TRUE.

© 2000–2019 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.7/command/cmake_parse_arguments.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API