FindDoxygen
Doxygen — это инструмент генерации документации (см. http://www.doxygen.org). Этот модуль ищет Doxygen и некоторые поддерживаемые им дополнительные инструменты. Эти инструменты включены как компоненты в команде find_package():
-
dot -
Graphviz
dotутилита, используемая для отрисовки различных графиков. -
mscgen -
Message Chart Generator утилита, используемая командами Doxygen
\mscи\mscfile. -
dia -
Dia — редактор диаграмм, используемый командой Doxygen
\diafile.
Примеры:
# Require dot, treat the other components as optional
find_package(Doxygen
REQUIRED dot
OPTIONAL_COMPONENTS mscgen dia)
Данный модуль определяет следующие переменные:
-
DOXYGEN_FOUND -
Истина, если был найден исполняемый файл
doxygen.
-
DOXYGEN_VERSION -
Версия, сообщенная
doxygen --version.
Модуль определяет IMPORTED целевые объекты для Doxygen и каждого найденного компонента. Они могут использоваться в пользовательских командах и т. д. и предпочтительнее устаревших (и теперь устаревших) переменных, таких как DOXYGEN_EXECUTABLE. Следующие целевые объекты импорта определяются, если соответствующий исполняемый файл был найден (целевые объекты импорта компонента будут определены только в том случае, если этот компонент был запрошен):
Doxygen::doxygen Doxygen::dot Doxygen::mscgen Doxygen::dia
Функции
-
doxygen_add_docs -
Эта функция предназначена для удобства добавления целевого объекта для генерации документации с помощью Doxygen. Она предназначена для предоставления разумных значений по умолчанию, чтобы проекты могли в основном просто указать входные файлы и каталоги, и этого будет достаточно для получения разумных результатов. Функция поддерживает возможность настройки конфигурации Doxygen, используемой для построения документации.
doxygen_add_docs(targetName [filesOrDirs...] [ALL] [WORKING_DIRECTORY dir] [COMMENT comment])Функция создаёт
Doxyfileи определяет пользовательский целевой объект, который запускает Doxygen для этого сгенерированного файла. Перечисленные файлы и каталоги используются в качествеINPUTсгенерированногоDoxyfile, и они могут содержать подстановочные знаки. Любые файлы, которые указаны явно, также будут добавлены какSOURCESпользовательского целевого объекта, поэтому они появятся в списке исходного кода проекта IDE.Для правильной работы относительных путей к вводу, по умолчанию рабочим каталогом команды Doxygen будет текущий каталог исходного кода (т. е.
CMAKE_CURRENT_SOURCE_DIR). Это можно переопределить с помощью опцииWORKING_DIRECTORYдля изменения каталога, используемого в качестве относительной точки отсчёта. Обратите также внимание, что Doxygen по умолчанию удаляет рабочий каталог из относительных путей в сгенерированной документации (см. опцию конфигурацииSTRIP_FROM_PATHDoxygen config option для получения подробностей).Если указано, дополнительная опция
commentбудет передана в качествеCOMMENTдля командыadd_custom_target(), используемой для создания пользовательского целевого объекта внутри.Если установлено значение ALL, целевой объект будет добавлен к целевому объекту по умолчанию.
Содержимое сгенерированного
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 в требуемый формат, если она установлена.
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
Существуют ситуации, когда может быть нежелательно, чтобы опция конфигурации автоматически заключалась в кавычки 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
Устаревшие переменные результатов
Для совместимости с предыдущими версиями 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.
Устаревшие переменные-подсказки
-
DOXYGEN_SKIP_DOT -
Эта переменная не оказывает никакого влияния на компонентную форму
find_package. В режиме обратной совместимости (т.е. без списка компонентов) она предотвращает модуль поиска от поиска утилиты Graphvizdot.
© 2000–2019 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.12/module/FindDoxygen.html