我有一個用C++編寫的項目,我正在使用swig生成一些C#包裝。 C++代碼使用Doxygen樣式註釋來註釋類和函數。是否有可能讓Swig接受這些doxygen註釋併爲C#包裝類和函數生成doxygen註釋?爲Swig生成的包含C++的C#生成doxygen註釋
回答
目前,SWIG不會解析代碼註釋,包括Doxygen文檔。
自從幾年以來,SWIG就有了一個SWIG分支,可以讓SWIG處理Doxygen的評論,但即使是目前(AFAIK)也只能將它們映射到Java和Python文檔。
因此,當前的最佳選擇是從C++源代碼中提取Doxygen文檔並將其插入到SWIG生成的包裝中。要了解如何可以做到這一點,這裏是一個什麼doxy2swig.py
做了簡要說明(這確實意味着Python的文檔字符串):
- 讓Doxygen的提取文件到其XML格式
- 解析XML,並重新格式化爲合適的Python文檔字符串
- 編寫
%feature("docstring")
SWIG指令告訴SWIG將文檔字符串附加到包裝的類和方法。
基本上,C#也可以做類似的事情。對於C#,我不知道該怎麼做(2),即如何將Doxygen XML輸出轉換爲合適的C#文檔,您可能需要實現自己(可能需要修改doxy2swig.py
腳本)。
對於(3)有一個巧妙的技巧是有記錄的here,注意對於C#也可以使用%csclassmodifiers
和%csmethodmodifiers
完成相同的技巧。這些SWIG功能指令是AFAIK,用於將public
或protected
添加到C#方法或類中。但他們可以被劫持以提前提取文檔(+關鍵字public
,不要忘記)。因此,它們有效地允許與Python的%feature("docstring")
指令相同的功能。
最後,我不知道C#,但是在C#包裝中包含Doxygen註釋有什麼意義?如果你只想使用Doxygen來生成文檔,你可以直接從C++源代碼完成,所以你不會獲得任何東西。在Python中,文檔字符串可以在運行時顯示爲幫助,並由一些IDE使用。 C#也有嗎?
這幾乎是我一直在走下去的道路,所以我猜我很高興有我的懷疑證實。至於你的問題:「最後,我不知道C#,但是在C#包裝中包含Doxygen註釋的意義何在?」我想我的問題應該更清楚。我對C#的評論沒有那麼感興趣,因爲我在他們用來生成的文檔頁面中。直接使用C++文檔字符串並不能正常工作,因爲很多次註釋都會引用其他函數,並且這些引用(以及超鏈接)需要指向相應的C#函數。 – Alex
- 1. 使用SRecode爲現有C文件生成doxygen註釋
- 2. C中C的註釋生成器
- 3. swig生成的python文件加上C#
- 4. doxygen的不能生成在C
- 5. C++ XML註釋生成MSDN樣式CHM
- 6. 在生成中包含T4生成的c#類
- 7. 如何從C++生成SWIG接口?
- 8. SWIG:產生當C#包裝
- 9. 如何爲xml文件註釋生成doxygen文檔?
- 10. 包含C++庫的R包無法爲窗口生成
- 11. 強制Visual C++僅爲我的文件生成XML註釋?
- 12. SWIG:添加註釋到生成的.py文件
- 13. 生成註釋以解釋C++程序的結構
- 14. 如何使用SWIG生成C++ API的C封裝?
- 15. 如何將SWIG生成的C#文件編譯爲.NET DLL?
- 16. Doxygen auto param生成
- 17. 在Eclipse中自動生成C/C++函數註釋
- 18. 任何軟件自動生成doxygen註釋塊?
- 19. Maven生成源/註釋
- 20. 自動生成註釋
- 21. 在Java中生成註釋
- 22. 從JPA註釋生成DDL
- 23. 更改CTRL K + C個以生成C風格的註釋(/ ** /)的C++ instad風格的註釋(//)在Visual Studio
- 24. Visual Studio 2010的C#註釋/文檔生成
- 25. 在moxy生成的java類中包含xs:restriction(s)作爲註釋(s)
- 26. 從生成的類生成數據註釋
- 27. 如何使用swig爲C++生成php界面如此
- 28. 如何使用SWIG爲C++ std :: vector生成Lua迭代器?
- 29. C#Excel生成
- 30. 生成C#
存在一個doxy2swig.py腳本,它會生成一個可包含在接口.i文件中的文件。這是相當整潔 –
我無法讓doxy2swig.py與C#一起工作。它看起來像是設計用於Python,粗略的谷歌搜索沒有產生任何結果。有任何想法嗎? – Alex
它應該工作得很好。它生成一個'DesiredName.i'文件,可以使用'%include「DesiredName.i」'來包含它。你有輸出嗎? –