FindDoxygen
Doxygen — это инструмент генерации документации (см. http://www.doxygen.org). Этот модуль ищет 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])Функция строит
Doxyfileи определяет пользовательскую цель, которая запускает Doxygen для этого сгенерированного файла. Указанные файлы и каталоги используются в качествеINPUTсгенерированногоDoxyfile, и они могут содержать подстановочные знаки. Любые файлы, которые явно указаны, также будут добавлены в качествеSOURCESпользовательской цели, поэтому они появятся в списке исходных файлов проекта IDE.Для того, чтобы относительные пути к входным файлам работали как ожидается, по умолчанию рабочим каталогом команды Doxygen будет текущий каталог исходных файлов (т. е.
CMAKE_CURRENT_SOURCE_DIR). Это можно переопределить с помощью параметраWORKING_DIRECTORY, чтобы изменить каталог, используемый в качестве относительной базовой точки. Обратите также внимание, что по умолчанию Doxygen удаляет рабочий каталог из относительных путей в сгенерированной документации (см. параметр конфигурации DoxygenSTRIP_FROM_PATHDoxygen config option для получения подробностей).Если указан, необязательный
commentбудет передан какCOMMENTдля командыadd_custom_target(), используемой для создания пользовательской цели ввода.Новое в версии 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 это устанавливается в формате, распознаваемом IDE 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
Новое в версии 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. В режиме обратной совместимости (т. е. без списка компонентов) она предотвращает поиск модулем поиска утилиты Graphvizdot.
© 2000–2021 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.20/module/FindDoxygen.html