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 удаляет рабочий каталог из относительных путей в сгенерированной документации (см.STRIP_FROM_PATHопцию конфигурации Doxygen для получения подробных сведений).Если указано, необязательный
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 в требуемый формат, если она установлена. Переменные 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–2021 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.21/module/FindDoxygen.html