Spec-Zone.ru › CMake 3.5

FeatureSummary

Макросы для генерации сводки по включённым/отключённым функциям

Этот модуль предоставляет макросы feature_summary(), set_package_properties() и add_feature_info(). Для совместимости он также по-прежнему предоставляет set_package_info(), set_feature_info(), print_enabled_features() и print_disabled_features().

Эти макросы могут быть использованы для генерации сводки включённых и отключённых пакетов и/или функций для дерева сборки:

-- The following OPTIONAL packages have been found:
LibXml2 (required version >= 2.4), XML processing lib, <http://xmlsoft.org>
   * Enables HTML-import in MyWordProcessor
   * Enables odt-export in MyWordProcessor
PNG , A PNG image library. , <http://www.libpng.org/pub/png/>
   * Enables saving screenshots
-- The following OPTIONAL packages have not been found:
Lua51 , The Lua scripting language. , <http://www.lua.org>
   * Enables macros in MyWordProcessor
Foo , Foo provides cool stuff.
FEATURE_SUMMARY( [FILENAME <file>]
                 [APPEND]
                 [VAR <variable_name>]
                 [INCLUDE_QUIET_PACKAGES]
                 [FATAL_ON_MISSING_REQUIRED_PACKAGES]
                 [DESCRIPTION "Found packages:"]
                 WHAT (ALL | PACKAGES_FOUND | PACKAGES_NOT_FOUND
                      | ENABLED_FEATURES | DISABLED_FEATURES)
               )

Макрос FEATURE_SUMMARY() может использоваться для вывода информации об включённых или отключённых пакетах или функциях проекта. По умолчанию выводятся только имена функций/пакетов и их требуемая версия, если она была указана. Используйте SET_PACKAGE_PROPERTIES(), чтобы добавить более полезную информацию, например, URL для загрузки соответствующего пакета или его назначение в проекте.

Опция WHAT является единственной обязательной опцией. Здесь вы указываете, какая информация будет выведена:

ALL
вывести всё
ENABLED_FEATURES
список всех включённых функций
DISABLED_FEATURES
список всех отключённых функций
PACKAGES_FOUND
список всех найденных пакетов
PACKAGES_NOT_FOUND
список всех пакетов, которые не были найдены
OPTIONAL_PACKAGES_FOUND
только те найденные пакеты, у которых тип OPTIONAL
OPTIONAL_PACKAGES_NOT_FOUND
только те ненайденные пакеты, у которых тип OPTIONAL
RECOMMENDED_PACKAGES_FOUND
только те найденные пакеты, у которых тип RECOMMENDED
RECOMMENDED_PACKAGES_NOT_FOUND
только те ненайденные пакеты, у которых тип RECOMMENDED
REQUIRED_PACKAGES_FOUND
только те найденные пакеты, у которых тип REQUIRED
REQUIRED_PACKAGES_NOT_FOUND
только те ненайденные пакеты, у которых тип REQUIRED
RUNTIME_PACKAGES_FOUND
только те найденные пакеты, у которых тип RUNTIME
RUNTIME_PACKAGES_NOT_FOUND
только те ненайденные пакеты, у которых тип RUNTIME

За исключением значения ALL, эти значения могут быть объединены для настройки вывода. Например:

feature_summary(WHAT ENABLED_FEATURES DISABLED_FEATURES)

Если задан параметр FILENAME, информация выводится в этот файл. Если используется APPEND, информация добавляется в конец файла, иначе файл перезаписывается, если он уже существует. Если используется опция VAR, информация «выводится» в указанную переменную. Если FILENAME не используется, информация выводится в терминал. Используя опцию DESCRIPTION, можно установить описание или заголовок, который будет выведен над фактическим содержимым. Если задано INCLUDE_QUIET_PACKAGES, пакеты, которые были найдены с помощью find_package(… QUIET), также будут перечислены. По умолчанию они пропускаются. Если задан параметр FATAL_ON_MISSING_REQUIRED_PACKAGES, CMake прервёт выполнение, если пакет, помеченный как REQUIRED, не был найден.

Пример 1, добавить всё в файл:

feature_summary(WHAT ALL
                FILENAME ${CMAKE_BINARY_DIR}/all.log APPEND)

Пример 2, вывести включённые функции в переменную enabledFeaturesText, включая пакеты QUIET:

feature_summary(WHAT ENABLED_FEATURES
                INCLUDE_QUIET_PACKAGES
                DESCRIPTION "Enabled Features:"
                VAR enabledFeaturesText)
message(STATUS "${enabledFeaturesText}")
SET_PACKAGE_PROPERTIES(<name> PROPERTIES
                       [ URL <url> ]
                       [ DESCRIPTION <description> ]
                       [ TYPE (RUNTIME|OPTIONAL|RECOMMENDED|REQUIRED) ]
                       [ PURPOSE <purpose> ]
                      )

Используйте этот макрос для настройки информации о названном пакете, которая затем может быть отображена с помощью FEATURE_SUMMARY(). Это можно сделать либо непосредственно в модуле Find, либо в проекте, использующем модуль после вызова find_package(). Функции, для которых можно задать информацию, добавляются автоматически командой find_package().

URL: здесь должен быть домашний сайт пакета или что-то подобное. В идеале это уже установлено непосредственно в модуле Find.

DESCRIPTION: Краткое описание пакета, не более одного предложения. В идеале это уже установлено непосредственно в модуле Find.

TYPE: Тип зависимости используемого проекта от этого пакета. По умолчанию OPTIONAL. В этом случае это пакет, который может быть использован проектом, когда доступен во время сборки, но он также может работать без него. RECOMMENDED похож на OPTIONAL, т.е. проект будет скомпилирован, если пакет отсутствует, но функциональность получившихся библиотек будет сильно ограничена. Если пакет REQUIRED недоступен во время сборки, проект может даже не скомпилироваться. Это можно комбинировать с аргументом FATAL_ON_MISSING_REQUIRED_PACKAGES для feature_summary(). Наконец, пакет RUNTIME — это пакет, который вообще не используется во время сборки, но который необходим для фактического запуска получившихся библиотек. Таким образом, если такой пакет отсутствует, проект всё равно можно собрать, но он может не работать позже. Если set_package_properties() вызывается несколько раз для одного и того же пакета с разными типами, TYPE изменяется только на более высокие значения (RUNTIME < OPTIONAL < RECOMMENDED < REQUIRED), более низкие значения игнорируются. Свойство TYPE специфично для проекта, поэтому его нельзя установить в модуле Find, а нужно установить в проекте.

PURPOSE: Это описывает, какие функции этот пакет включает в проект, то есть сообщает пользователю, какую функциональность он получает в получившихся бинарниках. Если set_package_properties() вызывается несколько раз для пакета, все свойства PURPOSE добавляются в список назначений пакета в проекте. Как и свойство TYPE, свойство PURPOSE специфично для проекта, поэтому его нельзя установить в модуле Find, а нужно установить в проекте.

Пример установки информации для пакета:

find_package(LibXml2)
set_package_properties(LibXml2 PROPERTIES
                       DESCRIPTION "A XML processing library."
                       URL "http://xmlsoft.org/")
set_package_properties(LibXml2 PROPERTIES
                       TYPE RECOMMENDED
                       PURPOSE "Enables HTML-import in MyWordProcessor")
...
set_package_properties(LibXml2 PROPERTIES
                       TYPE OPTIONAL
                       PURPOSE "Enables odt-export in MyWordProcessor")
find_package(DBUS)
set_package_properties(DBUS PROPERTIES
  TYPE RUNTIME
  PURPOSE "Necessary to disable the screensaver during a presentation" )
ADD_FEATURE_INFO(<name> <enabled> <description>)

Используйте этот макрос для добавления информации о функции с заданным именем <name>. <enabled> содержит информацию о том, включена ли эта функция, а <description> — это текст, описывающий функцию. Информацию можно отобразить с помощью feature_summary() для ENABLED_FEATURES и DISABLED_FEATURES соответственно.

Пример добавления информации о функции:

option(WITH_FOO "Help for foo" ON)
add_feature_info(Foo WITH_FOO "The Foo feature provides very cool stuff.")

Следующие макросы предоставляются для совместимости с предыдущими версиями CMake:

SET_PACKAGE_INFO(<name> <description> [<url> [<purpose>] ] )

Используйте этот макрос для настройки информации о названном пакете, которая затем может быть отображена с помощью FEATURE_SUMMARY(). Это можно сделать либо непосредственно в модуле Find, либо в проекте, использующем модуль после вызова find_package(). Функции, для которых можно задать информацию, добавляются автоматически командой find_package().

PRINT_ENABLED_FEATURES()

Делает то же, что и FEATURE_SUMMARY(WHAT ENABLED_FEATURES DESCRIPTION “Включенные функции:”)

PRINT_DISABLED_FEATURES()

Делает то же, что и FEATURE_SUMMARY(WHAT DISABLED_FEATURES DESCRIPTION “Отключенные функции:”)

SET_FEATURE_INFO(<name> <description> [<url>] )

Делает то же, что и SET_PACKAGE_INFO(<name> <description> <url> )

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

Spec-Zone.ru

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