Подтвердить что ты не робот

Исключая каталоги для Doxygen

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

*/.svn/*
*/docs/*
*/Properties/*
*/bin/*

Согласно Doxygen FAQ:

How can I exclude all test directories from my directory tree?

Simply put an exclude pattern like this in the configuration file:

EXCLUDE_PATTERNS = */test/*

Итак, мой файл Doxygen выглядит так:

# If the value of the INPUT tag contains directories, you can use the 
# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
# certain files from those directories. Note that the wildcards are matched 
# against the file with absolute path, so to exclude all test directories 
# for example use the pattern */test/*

EXCLUDE_PATTERNS       = */.svn/* \
                         */docs/* \
                         */published/* \
                         */bin/* \
                         */obj/*

Выход из Doxygen:

Searching for include files...
Searching for example files...
Searching for images...
Searching for files in directory c:/Test_Fixtures/pc_application/docs
Searching for files in directory c:/Test_Fixtures/pc_application/docs/.svn
Searching for files in directory c:/Test_Fixtures/pc_application/docs/.svn/prop-base
Searching for files in directory c:/Test_Fixtures/pc_application/docs/.svn/props
Searching for files in directory c:/Test_Fixtures/pc_application/docs/.svn/text-base
Searching for files in directory c:/Test_Fixtures/pc_application/docs/.svn/tmp
Searching for files in directory c:/Test_Fixtures/pc_application/docs/.svn/tmp/prop-base
Searching for files in directory c:/Test_Fixtures/pc_application/docs/.svn/tmp/props
Searching for files in directory c:/Test_Fixtures/pc_application/docs/.svn/tmp/text-base
Searching for files in directory c:/Test_Fixtures/pc_application/docs/html
Searching for files in directory c:/Test_Fixtures/pc_application/docs/html/.svn
Searching for files in directory c:/Test_Fixtures/pc_application/docs/html/.svn/prop-base
Searching for files in directory c:/Test_Fixtures/pc_application/docs/html/.svn/props
Searching for files in directory c:/Test_Fixtures/pc_application/docs/html/.svn/text-base
Searching for files in directory c:/Test_Fixtures/pc_application/docs/html/.svn/tmp
Searching for files in directory c:/Test_Fixtures/pc_application/docs/html/.svn/tmp/prop-base
Searching for files in directory c:/Test_Fixtures/pc_application/docs/html/.svn/tmp/props
Searching for files in directory c:/Test_Fixtures/pc_application/docs/html/.svn/tmp/text-base
Searching for files in directory c:/Test_Fixtures/pc_application/docs/html/search
Searching for files in directory c:/Test_Fixtures/pc_application/docs/html/search/.svn
Searching for files in directory c:/Test_Fixtures/pc_application/docs/html/search/.svn/prop-base
Searching for files in directory c:/Test_Fixtures/pc_application/docs/html/search/.svn/props
Searching for files in directory c:/Test_Fixtures/pc_application/docs/html/search/.svn/text-base
Searching for files in directory c:/Test_Fixtures/pc_application/docs/html/search/.svn/tmp
Searching for files in directory c:/Test_Fixtures/pc_application/docs/html/search/.svn/tmp/prop-base
Searching for files in directory c:/Test_Fixtures/pc_application/docs/html/search/.svn/tmp/props
Searching for files in directory c:/Test_Fixtures/pc_application/docs/html/search/.svn/tmp/text-base
Searching for files in directory c:/Test_Fixtures/pc_application/docs/rtf
Searching for files in directory c:/Test_Fixtures/pc_application/docs/rtf/.svn
Searching for files in directory c:/Test_Fixtures/pc_application/docs/rtf/.svn/prop-base
Searching for files in directory c:/Test_Fixtures/pc_application/docs/rtf/.svn/props
Searching for files in directory c:/Test_Fixtures/pc_application/docs/rtf/.svn/text-base
Searching for files in directory c:/Test_Fixtures/pc_application/docs/rtf/.svn/tmp
Searching for files in directory c:/Test_Fixtures/pc_application/docs/rtf/.svn/tmp/prop-base
Searching for files in directory c:/Test_Fixtures/pc_application/docs/rtf/.svn/tmp/props
Searching for files in directory c:/Test_Fixtures/pc_application/docs/rtf/.svn/tmp/text-base

Что ясно показывает, что EXCLUDE_PATTERNS не работает. У меня также есть опция EXCLUDE, установленная как:

# The EXCLUDE tag can be used to specify files and/or directories that should 
# excluded from the INPUT source files. This way you can easily exclude a 
# subdirectory from a directory tree whose root is specified with the INPUT tag.

EXCLUDE                = ../.svn \
                         ../docs \
                         ../published \
                         ../docs/.svn \
                         ../docs/.svn

Который тоже не работает.

Итак, вопрос в размере 100000 долларов США: как заставить Doxygen исключать, обходить, игнорировать, избегать указанных каталогов или папок (желательно того, что работает)?

Я использую Doxygen Wizard в Windows 7 на платформе 64-битного процессора и Doxygen 1.7.3.

4b9b3361

Ответ 1

Обратите внимание, что подстановочные знаки сопоставляются с файлом с абсолютным путем

Итак, просто используйте абсолютные пути для ваших исключений;)

PS: Кстати, я слишком много боролся с этим. Это небольшое упоминание в комментарии doxyfile кажется слишком незаметным.

К сожалению, я пропустил детали, которые вы уже пробовали. Возможно, это проблема с многострочным значением: попробуйте вставить все пути, используя только пробел в качестве разделителя. Это (плюс абсолютные шаблоны) достаточно для нескольких систем, которые я использовал в последнее время в doxygen.


Я сделал более глубокое тестирование, а также еще раз посмотрел документацию doxyfile. Правильный синтаксис - это пространство для разделения. Если вы действительно хотите использовать многострочный, поддерживаемый и документированный синтаксис будет выглядеть следующим образом:

EXCLUDE_PATTERNS       = */.svn/*
EXCLUDE_PATTERNS      += */docs/*
EXCLUDE_PATTERNS      += */published/*
# and so on

Кроме того, более подробно рассмотрим, как работают шаблоны исключения: сам каталог включен, тогда все внутри него будет проверено на шаблонах exclude и (поскольку оно всегда будет соответствовать), исключается из файла в файл основа.

Итак, подойдите ближе к вашему выводу: строки Searching for files in directory должны быть там (doxygen будет искать в каталоге, но ничего не обнаруживать, потому что все исключено); вы получаете Parsing code for file или Generating docs for для любого содержимого в этих каталогах? Если вы не получите ни одного из них, это означает, что все работает нормально (поиск каталогов осуществляется, но ничего не включено). Если файлы действительно включены, дайте пробел или синтаксис +=. Я ничего не вижу в документах, даже намекая, что ваш синтаксис \ может работать (конечно, я, возможно, что-то пропустил).

Ответ 2

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

Searching for example files...
Searching for files in directory .../wpkg/mainline/documentation
Searching for files in directory .../wpkg/mainline/documentation/.svn
Searching for files in directory .../wpkg/mainline/documentation/.svn/prop-base
[...]
Searching for images...
Searching for files in directory .../wpkg/mainline/documentation
Searching for files in directory .../wpkg/mainline/documentation/.svn
Searching for files in directory .../wpkg/mainline/documentation/.svn/prop-base
[...]

Поскольку у вас есть установка EXCLUDE_PATTERNS, чтобы игнорировать подкаталоги .svn. Я предполагаю, что ошибка в doxygen, которая должна проверять эти исключения при сканировании для примеров и изображений.

Также похоже, что он печатает все каталоги на экране, но правильно игнорирует их, как и прежде, используя их, он проверяет шаблоны исключения. Но это всего лишь догадка; хотя кажется, что кто-то говорит, что он здесь работает:

http://doxygen.10944.n7.nabble.com/EXCLUDE-DIRECTORY-PATTERN-td2185.html

Ответ 3

Как сделать так, чтобы Doxygen исключал, обходил, игнорировал, избегал указанных каталогов или папок (желательно того, что работает)?

Используйте опцию конфигурации INPUT !

INPUT = src other_folder README.md

Как уже упоминалось, шаблоны исключений будут по-прежнему учитывать файлы в каталогах, а не анализировать их на основе их соответствия регулярному выражению. Задание папок и файлов, которые необходимо рассмотреть, позволит достичь желаемого результата даже не поиска папок, что может значительно сократить время генерации.

Обратите внимание, что для этого директива EXCLUDE должна быть пустой, иначе будет произведен поиск.