为包含C ++的swig生成的C#生成doxygen注释

时间:2016-06-13 00:07:19

标签: c# c++ doxygen swig

我有一个用C ++编写的项目,我也使用swig生成一些C#包装器。 C ++代码使用Doxygen样式注释来注释类和函数。是否有可能让Swig接受那些doxygen注释并为C#包装器类和函数生成doxygen注释?

1 个答案:

答案 0 :(得分:4)

目前,SWIG根本不解析包含Doxygen文档的代码注释。

SWIG分支正在开发中几年,以使SWIG能够处理Doxygen评论,但即便如此(AFAIK)也只是将它们映射到Java和Python文档。

因此,目前最好的选择是从C ++源代码中提取Doxygen文档并将其插入到SWIG生成的包装器中。要理解如何做到这一点,这里简要解释一下doxy2swig.py的作用(这确实意味着python docstrings):

  1. 让Doxygen将文档提取为XML格式
  2. 解析XML,并重新格式化为合适的Python文档字符串
  3. 编写%feature("docstring") SWIG指令,告诉SWIG将文档字符串附加到包装的类和方法中。
  4. 基本上,C#也可以做类似的事情。我不知道如何做(2)C#,即如何将Doxygen XML输出转换为合适的C#文档,这可能需要自己实现(可能通过修改doxy2swig.py脚本)。

    对于(3),有一个简洁的技巧,有点记录here,并指出使用%csclassmodifiers%csmethodmodifiers也可以为C#做同样的事情。这些SWIG功能指令是AFAIK,用于将publicprotected添加到C#方法或类中。但是他们可以被劫持以提取所提取的文档(+ public关键字,不要忘记)。因此,它们有效地允许与Python的%feature("docstring")指令相同的功能。

    最后,我不知道C#,但是在C#包装器中包含Doxygen注释有什么意义呢?如果您只想使用Doxygen生成文档,可以直接从C ++源代码执行此操作,这样您就无法获得任何收益。在Python中,文档字符串可以在运行时显示为帮助,并由某些IDE使用。 C#也有这个吗?