Spec-Zone.ru › CMake

FindDoxygen

Doxygen — это инструмент генерации документации (см. https://www.doxygen.nl). Этот модуль ищет Doxygen и некоторые поддерживаемые им дополнительные инструменты:

dot

Graphviz dot утилита, используемая для рендеринга различных графиков.

mscgen

Message Chart Generator утилита, используемая командами Doxygen \msc и \mscfile.

dia

Dia — редактор диаграмм, используемый командой Doxygen \diafile.

Добавлена в версии 3.9: Эти инструменты доступны как компоненты в команде find_package(). Например:

# Require dot, treat the other components as optional
find_package(Doxygen
             REQUIRED dot
             OPTIONAL_COMPONENTS mscgen dia)

Этот модуль определяет следующие переменные:

DOXYGEN_FOUND

Истина, если был найден исполняемый файл doxygen.

DOXYGEN_VERSION

Версия, сообщенная doxygen --version.

Добавлена в версии 3.9: Модуль определяет IMPORTED целевые задачи для Doxygen и каждого найденного компонента. Они могут использоваться как часть пользовательских команд и т.д., и предпочтительнее устаревших (и теперь устаревших) переменных, таких как DOXYGEN_EXECUTABLE. Следующие целевые задачи импорта определяются, если соответствующий исполняемый файл был найден (целевые задачи импорта компонентов будут определены только в том случае, если был запрошен соответствующий компонент):

Doxygen::doxygen
Doxygen::dot
Doxygen::mscgen
Doxygen::dia

Функции

doxygen_add_docs

Добавлена в версии 3.9.

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

doxygen_add_docs(targetName
    [filesOrDirs...]
    [ALL]
    [USE_STAMP_FILE]
    [WORKING_DIRECTORY dir]
    [COMMENT comment]
    [CONFIG_FILE filename])

Функция создаёт Doxyfile и определяет пользовательскую целевую задачу, которая выполняет Doxygen с этим сгенерированным файлом. Перечисленные файлы и каталоги используются в качестве INPUT сгенерированного Doxyfile, и они могут содержать подстановочные знаки. Любые файлы, которые указаны явно, также будут добавлены в качестве SOURCES пользовательской целевой задачи, поэтому они будут отображаться в списке исходных кодов проекта IDE.

Чтобы относительные пути к исходным файлам работали как ожидается, по умолчанию рабочая директория команды Doxygen будет текущим каталогом исходных файлов (т.е. CMAKE_CURRENT_SOURCE_DIR). Это можно переопределить с помощью опции WORKING_DIRECTORY, чтобы изменить каталог, используемый в качестве относительной базовой точки. Обратите также внимание, что по умолчанию Doxygen удаляет рабочую директорию из относительных путей в сгенерированной документации (см. опцию конфигурации Doxygen STRIP_FROM_PATH опцию конфигурации Doxygen для получения подробностей).

Если указано, необязательный comment будет передан как COMMENT для команды add_custom_target(), используемой для создания пользовательской целевой задачи внутри.

Добавлена в версии 3.27: Если CONFIG_FILE задано, указанный файл с полным путем будет использоваться как файл конфигурации doxygen.

Добавлена в версии 3.12: Если ALL задано, целевая задача будет добавлена в целевую задачу по умолчанию.

Добавлена в версии 3.16: Если USE_STAMP_FILE задано, пользовательская команда, определенная этой функцией, создаст файл метки с именем <targetName>.stamp в текущем каталоге бинарных файлов всякий раз, когда Doxygen перезапускается. При наличии этой опции все элементы в <filesOrDirs> должны быть файлами (т.е. без каталогов, символических ссылок или подстановочных знаков), и каждый из файлов должен существовать в момент вызова doxygen_add_docs(). Возникнет ошибка, если любой из перечисленных элементов отсутствует или не является файлом, когда указана опция USE_STAMP_FILE. Будет создана зависимость от каждого из файлов, чтобы Doxygen выполнялся только в том случае, если один из файлов обновлен. Без опции USE_STAMP_FILE, Doxygen всегда будет перезапущен, если целевая задача <targetName> построена независимо от того, изменились ли какие-либо элементы, перечисленные в <filesOrDirs>.

Содержимое сгенерированного Doxyfile можно настроить, задав переменные CMake перед вызовом doxygen_add_docs(). Любая переменная с именем в формате DOXYGEN_<tag> заменит соответствующую опцию конфигурации <tag> в Doxyfile. Полный список поддерживаемых опций конфигурации см. в документации Doxygen.

Некоторые значения по умолчанию Doxygen переопределяются, чтобы обеспечить более подходящее поведение для проекта CMake. Каждое из следующих значений будет явно установлено, если значение переменной не было установлено до вызова doxygen_add_docs(), за некоторыми исключениями:

DOXYGEN_HAVE_DOT

Устанавливается в YES если компонент dot был запрошен и найден, NO в противном случае. Любое существующее значение DOXYGEN_HAVE_DOT игнорируется.

DOXYGEN_DOT_MULTI_TARGETS

Устанавливается в YES этим модулем (обратите внимание, что это требует версию dot новее 1.8.10). Эта опция имеет смысл только если DOXYGEN_HAVE_DOT также установлено в YES.

DOXYGEN_GENERATE_LATEX

Устанавливается в NO этим модулем.

DOXYGEN_WARN_FORMAT

Для генераторов на основе Visual Studio это устанавливается в формат, распознаваемый средой Visual Studio: $file($line) : $text. Для всех остальных генераторов значение по умолчанию Doxygen не переопределяется.

DOXYGEN_PROJECT_NAME

Заполняется именем текущего проекта (т.е. PROJECT_NAME).

DOXYGEN_PROJECT_NUMBER

Заполняется версией текущего проекта (т.е. PROJECT_VERSION).

DOXYGEN_PROJECT_BRIEF

Заполняется описанием текущего проекта (т.е. PROJECT_DESCRIPTION).

DOXYGEN_INPUT

Проектам не следует устанавливать эту переменную. Она будет заполняться набором файлов и каталогов, переданных doxygen_add_docs(), обеспечивая тем самым согласованное поведение с другими встроенными командами, такими как add_executable(), add_library() и add_custom_target(). Если проект установит переменную с именем DOXYGEN_INPUT, она будет проигнорирована, и будет выведено сообщение об ошибке.

DOXYGEN_RECURSIVE

Устанавливается в YES этим модулем.

DOXYGEN_EXCLUDE_PATTERNS

Если набор входов включает каталоги, эта переменная указывает шаблоны, используемые для исключения файлов из них. Следующие шаблоны добавляются doxygen_add_docs(), чтобы гарантировать, что CMake-специфические файлы и каталоги не включаются в входные данные. Если проект устанавливает DOXYGEN_EXCLUDE_PATTERNS, эти содержимое объединяются с этими дополнительными шаблонами, а не заменяют их:

*/.git/*
*/.svn/*
*/.hg/*
*/CMakeFiles/*
*/_CPack_Packages/*
DartConfiguration.tcl
CMakeLists.txt
CMakeCache.txt
DOXYGEN_OUTPUT_DIRECTORY

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

Чтобы изменить любые из этих значений по умолчанию или переопределить любую другую опцию конфигурации Doxygen, установите соответствующие переменные перед вызовом doxygen_add_docs(). Например:

set(DOXYGEN_GENERATE_HTML NO)
set(DOXYGEN_GENERATE_MAN YES)

doxygen_add_docs(
    doxygen
    ${PROJECT_SOURCE_DIR}
    COMMENT "Generate man pages"
)

Некоторые параметры конфигурации Doxygen принимают списки значений, но Doxygen требует, чтобы они были разделены пробелами. Переменные CMake хранят списки в виде строки с элементами, разделенными точкой с запятой, поэтому требуется преобразование. Команда doxygen_add_docs() специально проверяет следующие параметры конфигурации Doxygen и преобразует содержимое соответствующей переменной CMake в требуемый формат, если она установлена. Переменные CMake называются DOXYGEN_<name> для указанных здесь настроек Doxygen.

ABBREVIATE_BRIEF
ALIASES
CITE_BIB_FILES
DIAFILE_DIRS
DOTFILE_DIRS
DOT_FONTPATH
ENABLED_SECTIONS
EXAMPLE_PATH
EXAMPLE_PATTERNS
EXCLUDE
EXCLUDE_PATTERNS
EXCLUDE_SYMBOLS
EXPAND_AS_DEFINED
EXTENSION_MAPPING
EXTRA_PACKAGES
EXTRA_SEARCH_MAPPINGS
FILE_PATTERNS
FILTER_PATTERNS
FILTER_SOURCE_PATTERNS
HTML_EXTRA_FILES
HTML_EXTRA_STYLESHEET
IGNORE_PREFIX
IMAGE_PATH
INCLUDE_FILE_PATTERNS
INCLUDE_PATH
INPUT
LATEX_EXTRA_FILES
LATEX_EXTRA_STYLESHEET
MATHJAX_EXTENSIONS
MSCFILE_DIRS
PLANTUML_INCLUDE_PATH
PREDEFINED
QHP_CUST_FILTER_ATTRS
QHP_SECT_FILTER_ATTRS
STRIP_FROM_INC_PATH
STRIP_FROM_PATH
TAGFILES
TCL_SUBST

Следующие однозначные параметры Doxygen будут автоматически заключены в кавычки, если они содержат хотя бы один пробел:

CHM_FILE
DIA_PATH
DOCBOOK_OUTPUT
DOCSET_FEEDNAME
DOCSET_PUBLISHER_NAME
DOT_FONTNAME
DOT_PATH
EXTERNAL_SEARCH_ID
FILE_VERSION_FILTER
GENERATE_TAGFILE
HHC_LOCATION
HTML_FOOTER
HTML_HEADER
HTML_OUTPUT
HTML_STYLESHEET
INPUT_FILTER
LATEX_FOOTER
LATEX_HEADER
LATEX_OUTPUT
LAYOUT_FILE
MAN_OUTPUT
MAN_SUBDIR
MATHJAX_CODEFILE
MSCGEN_PATH
OUTPUT_DIRECTORY
PERL_PATH
PLANTUML_JAR_PATH
PROJECT_BRIEF
PROJECT_LOGO
PROJECT_NAME
QCH_FILE
QHG_LOCATION
QHP_CUST_FILTER_NAME
QHP_VIRTUAL_FOLDER
RTF_EXTENSIONS_FILE
RTF_OUTPUT
RTF_STYLESHEET_FILE
SEARCHDATA_FILE
USE_MDFILE_AS_MAINPAGE
WARN_FORMAT
WARN_LOGFILE
XML_OUTPUT

Добавлен в версии 3.11: Существуют ситуации, когда нежелательно, чтобы конкретный параметр конфигурации автоматически заключался в кавычки doxygen_add_docs(), например, ALIASES, который может потребовать собственной вложенной кавычки. Переменная DOXYGEN_VERBATIM_VARS может использоваться для указания списка переменных Doxygen (включая префикс DOXYGEN_), которые не должны заключаться в кавычки. Затем проект отвечает за обеспечение того, чтобы значения этих переменных имели смысл, когда они помещаются непосредственно в файл входных данных Doxygen. В случае переменных списков элементы списка по-прежнему разделяются пробелами, пропускается только автоматическое заключение в кавычки. Например, следующее позволяет doxygen_add_docs() применять кавычки к DOXYGEN_PROJECT_BRIEF, но не к каждому элементу в списке DOXYGEN_ALIASES (синтаксис в квадратных скобках также можно использовать для облегчения работы со вложенными кавычками):

set(DOXYGEN_PROJECT_BRIEF "String with spaces")
set(DOXYGEN_ALIASES
    [[somealias="@some_command param"]]
    "anotherAlias=@foobar"
)
set(DOXYGEN_VERBATIM_VARS DOXYGEN_ALIASES)

Получившиеся Doxyfile будут содержать следующие строки:

PROJECT_BRIEF = "String with spaces"
ALIASES       = somealias="@some_command param" anotherAlias=@foobar

Устаревшие переменные результатов

Устарело начиная с версии 3.9.

Для совместимости с предыдущими версиями CMake также определены следующие переменные, но они устарели и больше не должны использоваться:

DOXYGEN_EXECUTABLE

Путь к команде doxygen. Если проектам нужно обратиться к исполняемому файлу doxygen напрямую, они должны использовать целевой импорт Doxygen::doxygen вместо этого.

DOXYGEN_DOT_FOUND

Истина, если был найден исполняемый файл dot.

DOXYGEN_DOT_EXECUTABLE

Путь к команде dot. Если проектам нужно обратиться к исполняемому файлу dot напрямую, они должны использовать целевой импорт Doxygen::dot вместо этого.

DOXYGEN_DOT_PATH

Путь к каталогу, содержащему исполняемый файл dot в соответствии с данными DOXYGEN_DOT_EXECUTABLE. Путь может содержать косые черты даже в Windows и не подходит для непосредственной подстановки в шаблон Doxyfile.in. Если вам нужно это значение, получите свойство IMPORTED_LOCATION целевого объекта Doxygen::dot и используйте get_filename_component() для извлечения каталожной части этого пути. Также вы можете рассмотреть использование file(TO_NATIVE_PATH) для подготовки пути к файлу конфигурации Doxygen.

Устаревшие переменные подсказок

Устарело начиная с версии 3.9.

DOXYGEN_SKIP_DOT

Эта переменная не влияет на компонентную форму find_package. В режиме обратной совместимости (т. е. без списка компонентов) она предотвращает поиск модуля поиска утилиты Graphviz dot.

© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/module/FindDoxygen.html

Spec-Zone.ru

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