Я попытался воспроизвести ошибку с помощью командной строки 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-файлы.