2016-06-13 15 views
5

私はC++で書かれたプロジェクトを持っています。ここではswigを使ってC#ラッパーも生成しています。 C++コードは、Doxygenスタイルのコメントを使用して、クラスと関数に注釈を付けます。 Swigがdoxygenコメントを取得し、C#ラッパークラスと関数のdoxygenコメントを生成することは可能ですか?swigで生成されたC++用のdoxygenコメントの生成C++をラップする

+1

doxy2swig.pyスクリプトが存在し、インターフェイスの.iファイルに含めることができるファイルが生成されます。それはかなりきれいです –

+0

私はdoxy2swig.pyをC#で動作させるのに問題があります。 Pythonで動作するように設計されているようだし、大雑把なgoogle検索でも結果は得られませんでした。何か案は? – Alex

+0

うまくいくはずです。 'DesiredName.i'ファイルを生成します。このファイルは'%include "DesiredName.i"を使ってインクルードすることができます。出力はありますか? –

答えて

4

現在、SWIGはDoxygenのドキュメントを含むコードコメントを解析しません。

SWIGがDoxygenコメントを扱えるようになってから2年が経過して以来、開発中のSWIGブランチがありますが、現在でも(AFAIK)はそれらをJavaおよびPythonのドキュメントにのみマップしています。

現在、最良の選択肢は、C++ソースコードからDoxygenドキュメントを抽出し、それをSWIG生成ラッパーに挿入することです。これを行う方法を理解するために、ここでdoxy2swig.pyが何をするかの簡単な説明である(これは実際にPythonのdocstringのためのものです):

  1. レッツDoxygenのは
  2. は、XMLを解析し、そのXML形式にドキュメントを抽出し、適切なPythonのdocstringsに再フォーマットする
  3. %feature("docstring")を書くSWIGは、docstringをラップされたクラスとメソッドにアタッチするよう指示します。

基本的に、C#でも同様のことが可能です。 DoxygenのXML出力を適切なC#ドキュメントに変換する方法(つまり、おそらくdoxy2swig.pyスクリプトを変更して)を実装する必要があるかもしれません。

については、hereと書かれているようなものがありますが、%csclassmodifiers%csmethodmodifiersを使ってC#でも同じことができることに注意してください。これらのSWIG機能ディレクティブはAFAIKで、publicまたはprotectedのいずれかをC#のメソッドまたはクラスの先頭に使用します。しかし、それらは抽出された文書の前にハイジャックされることがあります(+ publicキーワード、忘れないでください)。したがって、それらは効果的にPythonの%feature("docstring")ディレクティブと同じ機能を許可します。

最後に、C#についてはわかりませんが、C#ラッパーにDoxygenコメントが含まれている点は何ですか?ドキュメンテーションを生成するためにDoxygenを使いたいだけなら、C++ソースからこれを直接行うことができるので、何も得られません。 Pythonでは、ドキュメントストリングは実行時にヘルプとして表示され、一部のIDEで使用されます。 C#もこれを持っていますか?

+0

これは私が行ってきた道のりだから、私の疑惑を確認するのはいいことだと思う。あなたの質問に関して:「最後に、私はC#を知らないが、DoxygenコメントをC#ラッパーに含めるのは何ですか?私は私の質問でより明確にすべきだったと思う。私はC#のコメントに興味がありません。私が使っているドキュメンテーションのページにあります。多くの場合、コメントは他の関数を参照し、これらの参照(およびハイパーリンク)は適切なC#関数を指す必要があるため、C++のドキュメント文字列を直接使用すると機能しません。 – Alex

関連する問題