Исключая каталоги для Doxygen - PullRequest
41 голосов
/ 01 апреля 2011

Я хочу, чтобы 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

, которая тоже не работает.

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

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

Ответы [ 3 ]

41 голосов
/ 01 апреля 2011

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

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

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

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


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

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

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

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

2 голосов
/ 10 августа 2013

Обратите внимание, что я могу видеть подобное явление, когда я использую 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

0 голосов
/ 27 марта 2019

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

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

INPUT = src other_folder README.md

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

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

...