登录论坛

查看完整版本 : 在Windows XP上使用Doxygen 1.6.3的输入过滤器出现问题


poster
2019-12-10, 20:41
我正在尝试使用doxygen生成一些我编写的matlab类的文档。我正在使用doxygen-matlab (http://www.mathworks.com/matlabcentral/fileexchange/25925-using-doxygen-with-matlab)软件包,其中包括一个perl脚本,用于将matlab .m文件融合为c ++样式的注释文件,以便doxygen可以读取它们。

在我的doxyfile中,我已经设置(根据说明)

FILTER_PATTERNS = *m=C:/doxygenMatlab/m2cpp.pl 但是,当代码运行时,而不是在输入文件上运行脚本时,似乎只是使用.pl的默认Windows设置打开脚本。

IE,如果我将.pl与记事本关联,则doxygen试图解析的每个输入文件都会由记事本打开一次脚本。如果我将.pl与perl.exe关联,脚本将运行并抛出no参数错误

参数必须在C:\ doxygenMatlab \ m2cpp.pl第4行中包含文件名-1。

Doxygen文档说

Doxygen will invoke the filter program by executing (via popen()) the command 所以我想知道popen()和Windows是否可以解决一些问题。



回答:

我尝试使用Windows命令提示符(“ cmd”)重现该错误,并注意到以下内容:


如果调用“ perl m2cpp.pl”,则会出现错误-1,因为未指定要转换为cpp文件的m文件。
如果调用“ perl m2cpp.pl mfile”,并且mfile的路径包含空格,则会出现错误1。
将mfile移到不包含空格的位置后,得到了所需的输出。
现在回到Doxygen。我尝试了您的建议,Fabrice,没有任何运气。我阅读了doxygen帮助,发现仅当FILTER_PATTERNS为空时才读取和使用INPUT_FILTER变量。

因此,我现在使用INPUT_FILTER =“ C:\ Programme \ MATLAB \ R2009a \ sys \ perl \ win32 \ bin \ perl U:\ doxygen_matlab \ m2cpp.pl”和一个空的FILTER_PATTERNS变量。使用此配置,您甚至可以将PERL_PATH变量保留为空。此外,包含空格的文件名似乎没有问题。

不幸的是,所有文件都使用上述配置进行了解析,而不仅仅是m文件。但是,将FILTER_PATTERNS设置为* .m = C:\ Programme \ MATLAB \ R2009a \ sys \ perl \ win32 \ bin \ perl U:\ doxygen_matlab \ m2cpp.pl无效,因为doxygen自动添加了过滤后的mfile的名称。并将命令解释为perl“ m2cpp.pl mfile”。当然,文件“ m2cpp.pl mfile”不存在,因为这是两个文件。

也许您可以找到解决此问题的方法。同时,我建议您采用上述解决方法,并将C文件远离包含m文件的文件夹。



更多&回答... (https://stackoverflow.com/questions/2701671)