Проблема с входным фильтром при использовании doxygen 1.6.3 на Windows XP - PullRequest
1 голос
/ 24 апреля 2010

Я пытаюсь использовать doxygen для генерации документации для некоторых написанных мной классов matlab.Я использую пакет doxygen-matlab , который включает в себя сценарий perl для kludge файлов .mlab .mm в файлы с комментариями в стиле c ++, чтобы doxygen мог их читать.

В моем файле doxyустановили (в соответствии с инструкциями)

FILTER_PATTERNS        = *m=C:/doxygenMatlab/m2cpp.pl

Однако, когда код запускается, а не запускает сценарий для входных файлов, он просто открывает сценарий, используя любую настройку Windows по умолчанию для .plis.

IE, если я связываю .pl с блокнотом, скрипт открывается блокнотом один раз для каждого входного файла, который пытается проанализировать doxygen.Если я связываю .pl с perl.exe, скрипт запускается и выдает ошибку без аргументов

Аргумент должен содержать имя файла -1 в C: \ doxygenMatlab \ m2cpp.pl строка 4.

В документации по Doxygen написано

Doxygen will invoke the filter program by executing (via popen()) the command <filter> <input-file>

Так что мне интересно, есть ли какие-нибудь проблемы с popen () и окнами, которые я мог бы исправить.

Ответы [ 5 ]

2 голосов
/ 03 мая 2010

Не могли бы вы попробовать способы обхода, которые я разместил на Matlab File Exchange относительно пакета doxygen?

  1. Установите следующие переменные в Doxyfile: INPUT_FILTER = perl m2cpp.pl FILE_PATTERNS = * м.

  2. Если это не работает, попробуйте установить ActivePerl: с этой версией perl все работает нормально.

1 голос
/ 26 августа 2015

написать простой пакетный файл, например, mfilter.bat, который принимает один аргумент из командной строки:

C:\Programme\MATLAB\R2009a\sys\perl\win32\bin\perl U:\doxygen_matlab\m2cpp.pl %1

Изменить настройки в Doxyfile:

FILTER_PATTERNS = *.m=mfile.bat

Это сделал для меня (на платформе Windows)

1 голос
/ 03 мая 2010

Я попытался воспроизвести ошибку с помощью командной строки Windows («cmd») и заметил следующее:

  • Если вы вызываете «perl m2cpp.pl», вы получаете ошибку -1, потому что вы не указали m-файл для преобразования в cpp-файл.
  • Если вы вызываете "perl m2cpp.pl mfile", а путь к mfile содержит пробелы, вы получаете ошибку 1.
  • После того, как я переместил mfile в место, где нет пробелов, я получил желаемый результат.

Теперь вернемся к Doxygen. Я попробовал то, что ты предложил, Фабрис, без всякой удачи. Я прочитал справку doxygen и обнаружил, что переменная INPUT_FILTER только для чтения и использования, если FILTER_PATTERNS пуст.

Поэтому теперь я использую INPUT_FILTER = "C: \ Program \ MATLAB \ R2009a \ sys \ perl \ win32 \ bin \ perl U: \ doxygen_matlab \ m2cpp.pl" и пустую переменную FILTER_PATTERNS. При такой конфигурации вы даже можете оставить переменную PERL_PATH пустой. Более того, похоже, нет проблем с именами файлов, которые содержат пробелы.

К сожалению, все файлы анализируются с указанной конфигурацией, а не только m-файлы. Однако установка FILTER_PATTERNS на что-то вроде * .m = C: \ Program \ MATLAB \ R2009a \ sys \ perl \ win32 \ bin \ perl U: \ doxygen_matlab \ m2cpp.pl не работает, поскольку doxygen автоматически добавляет имя отфильтрованного mfile и интерпретирует команду как perl "m2cpp.pl mfile". Конечно, файл «m2cpp.pl mfile» не существует, потому что это два файла.

Может быть, вы сможете найти решение этой проблемы. Тем временем я предлагаю обходной путь, описанный выше, и держите ваши C-файлы подальше от папки, содержащей m-файлы.

0 голосов
/ 19 апреля 2014

Согласно форумам Doxygen , существует разница в поведении между использованием INPUT_FILTER и FILTER_PATTERNS.

Я обнаружил, что если я сделаю дополнительное (избежав) цитирование, я смогу заставить работать FILTER_PATTERNS. Например, вместо:

FILTER_PATTERNS        = "*.m=sed -e 's|%%|//!|'"

Попробуйте:

FILTER_PATTERNS        = "*.m=\"sed -e 's|%%|//!|'\""

(Все мои эксперименты были проведены с Doxygen версии 1.8.6)

0 голосов
/ 06 мая 2010

Я думаю, что решил эту проблему: она возникла из-за плохой связи между .pl и выполняемой программой (возможно, из-за неправильной установки Perl, поставляемого с Matlab?).

Чтобы исправить это, вы должны изменить ассоциацию для файлов .pl: в командной строке Windows («cmd») просто введите 2 следующие строки:

assoc .pl=PerlScript

ftype PerlScript=C:\Program Files\MATLAB\R20xx\sys\perl\win32\bin\perl.exe %1 %*

(старая установка забыла% * в конце, аргументы не были переданы в сценарий m2cpp.pl).

И тогда все должно быть в порядке с FILTER_PATTERNS, установленным обычным способом, например FILTER_PATTERN=*m=C:\DoxygenMatlbab\m2cpp.pl

Не могли бы вы сказать мне, если это решило вашу проблему?

...