2010-04-23 44 views
1

我想使用doxygen爲我寫的一些matlab類生成文檔。我使用doxygen-matlab軟件包,其中包括一個perl腳本,用於將matlab .m文件拼湊成C++風格的註釋文件,以便doxygen可以讀取它們。輸入過濾器在Windows XP上使用doxygen 1.6.3的問題

在我的Doxyfile,我已經(按說明書)設置

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

然而,當代碼運行,而不是在輸入文件運行腳本,它似乎只用打開腳本什麼.pl的默認窗口設置爲。

IE瀏覽器,如果我將.pl與記事本關聯起來,腳本會被記事本打開一次,用於doxygen試圖解析的每個輸入文件。如果我聯想特等與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()和Windows。

回答

1

我嘗試使用Windows命令提示符(「cmd」),以重現錯誤,注意到以下幾點:

  • 如果你叫「perl的m2cpp.pl」你得到錯誤-1,因爲你沒有指定要翻譯成cpp文件的m文件。
  • 如果您調用「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

這個固定我的問題;它可以很好地解決問題,因爲我不太可能混合使用c和m文件。 另外,除了更好的食物,顯然還有法國的優勢。當我用「程序文件」替換「程序」時,doxygen窒息。但使用dos風格的「progra〜1」效果很好。 如果有人發現使用FILTER_PATTERNS工作的方法,我會等待一天以接受此答案,但在幾乎所有情況下,這都會足夠好。 – Marc 2010-05-03 17:03:51

+0

對於我來說,程序文件中的空間還有INPUT_FILTER =「C:\ Progra〜1 \ MATLAB \ sys \ perl \ win32 \ bin \ perl.exe等\ m2cpp.pl」 – 2016-09-02 10:14:34

2

你能否嘗試我在Matlab File Exchange上發佈的關於doxygen包的解決方法?

  1. 設置下列變量中的Doxyfile: INPUT_FILTER = perl的m2cpp.pl FILE_PATTERNS = * M

  2. 如果不工作,你應該嘗試安裝的activeperl:與此版本的perl,一切工作正常。

0

我想我解決了這個問題:它來自於.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

你能告訴我,如果這能解決問題?

+0

我仍然遇到同樣的錯誤之前;嘗試使用C:\ Program Files \ ....和C:\ Progra〜1 \ .... 我會在週一更多地使用它,看看我是否可以使它工作 – Marc 2010-05-08 02:33:26

0

根據Doxygen forums,在使用INPUT_FILTER和FILTER_PATTERNS之間的行爲有所不同。

我發現如果我做一些額外的(轉義)引用,我可以讓FILTER_PATTERNS工作。例如,而不是:

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

嘗試:

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

1

編寫一個簡單的批處理文件,例如(我所有的實驗用doxygen的版本1.8.6完成) mfilter.bat,這需要通過命令行一個參數:在的Doxyfile

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

更改設置:

FILTER_PATTERNS = *.m=mfile.bat

這爲我做(在Windows平臺上)