FindDoxygen
Doxygen — это инструмент генерации документации (см. https://www.doxygen.nl). Этот модуль ищет Doxygen и некоторые поддерживаемые им дополнительные инструменты:
-
dot -
Graphviz
dotутилита, используемая для рендеринга различных графиков. -
mscgen -
Message Chart Generator утилита, используемая командами Doxygen's
\mscи\mscfile. -
dia -
Dia редактор диаграмм, используемый командой Doxygen's
\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 по умолчанию удаляет рабочий каталог из относительных путей в сгенерированной документации (см.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 это устанавливается в формате, распознаваемом 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 в требуемый формат, если она установлена. Переменные 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. В режиме обратной совместимости (т.е. без списка компонентов) она предотвращает поиск модулем поиска утилиты Graphvizdot.
© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.27/module/FindDoxygen.html