我有一个用C ++编写的项目,我也使用swig生成一些C#包装器。 C ++代码使用Doxygen样式注释来注释类和函数。是否有可能让Swig接受那些doxygen注释并为C#包装器类和函数生成doxygen注释?
答案 0 :(得分:4)
目前,SWIG根本不解析包含Doxygen文档的代码注释。
SWIG分支正在开发中几年,以使SWIG能够处理Doxygen评论,但即便如此(AFAIK)也只是将它们映射到Java和Python文档。
因此,目前最好的选择是从C ++源代码中提取Doxygen文档并将其插入到SWIG生成的包装器中。要理解如何做到这一点,这里简要解释一下doxy2swig.py
的作用(这确实意味着python docstrings):
%feature("docstring")
SWIG指令,告诉SWIG将文档字符串附加到包装的类和方法中。基本上,C#也可以做类似的事情。我不知道如何做(2)C#,即如何将Doxygen XML输出转换为合适的C#文档,这可能需要自己实现(可能通过修改doxy2swig.py
脚本)。
对于(3),有一个简洁的技巧,有点记录here,并指出使用%csclassmodifiers
和%csmethodmodifiers
也可以为C#做同样的事情。这些SWIG功能指令是AFAIK,用于将public
或protected
添加到C#方法或类中。但是他们可以被劫持以提取所提取的文档(+ public
关键字,不要忘记)。因此,它们有效地允许与Python的%feature("docstring")
指令相同的功能。
最后,我不知道C#,但是在C#包装器中包含Doxygen注释有什么意义呢?如果您只想使用Doxygen生成文档,可以直接从C ++源代码执行此操作,这样您就无法获得任何收益。在Python中,文档字符串可以在运行时显示为帮助,并由某些IDE使用。 C#也有这个吗?