私はC++で書かれたプロジェクトを持っています。ここではswigを使ってC#ラッパーも生成しています。 C++コードは、Doxygenスタイルのコメントを使用して、クラスと関数に注釈を付けます。 Swigがdoxygenコメントを取得し、C#ラッパークラスと関数のdoxygenコメントを生成することは可能ですか?swigで生成されたC++用のdoxygenコメントの生成C++をラップする
答えて
現在、SWIGはDoxygenのドキュメントを含むコードコメントを解析しません。
SWIGがDoxygenコメントを扱えるようになってから2年が経過して以来、開発中のSWIGブランチがありますが、現在でも(AFAIK)はそれらをJavaおよびPythonのドキュメントにのみマップしています。
現在、最良の選択肢は、C++ソースコードからDoxygenドキュメントを抽出し、それをSWIG生成ラッパーに挿入することです。これを行う方法を理解するために、ここでdoxy2swig.py
が何をするかの簡単な説明である(これは実際にPythonのdocstringのためのものです):
- レッツDoxygenのは
- は、XMLを解析し、そのXML形式にドキュメントを抽出し、適切なPythonのdocstringsに再フォーマットする
%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#もこれを持っていますか?
これは私が行ってきた道のりだから、私の疑惑を確認するのはいいことだと思う。あなたの質問に関して:「最後に、私はC#を知らないが、DoxygenコメントをC#ラッパーに含めるのは何ですか?私は私の質問でより明確にすべきだったと思う。私はC#のコメントに興味がありません。私が使っているドキュメンテーションのページにあります。多くの場合、コメントは他の関数を参照し、これらの参照(およびハイパーリンク)は適切なC#関数を指す必要があるため、C++のドキュメント文字列を直接使用すると機能しません。 – Alex
- 1. Pythonエラー:SWIGで生成されたコンストラクタがC++のテンプレートコードで生成されました
- 2. SWIGで生成されたC#ファイルを.NET DLLにコンパイルするには?
- 3. SWIGでラップCコールバック
- 4. ジェネリックコレクションを使用してC#プロジェクト用Doxygenを生成
- 5. SwigでC++スーパークラスを生成する方法
- 6. MSDNスタイルを生成するためのC++ XMLコメントCHM
- 7. SWIG C++ to Python:Pythonリストのサブクラスを生成します。
- 8. EclipseのC/C++関数のコメントを自動生成
- 9. SWIGを使用してC++ APIでCラッパーを生成するにはどうすればよいですか?
- 10. 時間ベースのOTP生成で間違った鍵が生成されるC#
- 11. 生成されたC#LINQ to SQLクラス
- 12. 名前を変更する方法C構造から作成されたSWIG生成プロキシJavaクラス
- 13. SWIGで生成されたオブジェクトのメモリ管理がCに渡されました
- 14. XSD2CODEで生成されたC#クラスの使用方法
- 15. C++のループでランダム化されたオブジェクトを生成する
- 16. C++コード生成とdoxygenサポート付きのフリーUMLツール
- 17. SWIGで生成されたインタフェースを使用してJavaからC++関数に文字列を渡す方法
- 18. 名前の変更方法Cの列挙型から作成されたSWIG生成プロキシJavaクラス
- 19. C++ Doxygen - なぜドキュメントテンプレートを生成するだけなのですか?
- 20. C++ Doxygen .docファイルの作成
- 21. 私のCファイルはPro * Cから生成されました
- 22. CodeFirst C#の生成
- 23. マルチスレッドシグネチャの生成C#
- 24. C#で生成されたExcelファイルの目次を作成するには?
- 25. .Rmdでプロットされたグラフ(コメント付き)を生成するループ
- 26. Cネストされた関数で乱数を生成する
- 27. HipHopで生成されたC++ソースをコンパイルする
- 28. C#コード生成
- 29. C#.NETを使用したPDF生成
- 30. C/C++でのスーパーノードの生成
doxy2swig.pyスクリプトが存在し、インターフェイスの.iファイルに含めることができるファイルが生成されます。それはかなりきれいです –
私はdoxy2swig.pyをC#で動作させるのに問題があります。 Pythonで動作するように設計されているようだし、大雑把なgoogle検索でも結果は得られませんでした。何か案は? – Alex
うまくいくはずです。 'DesiredName.i'ファイルを生成します。このファイルは'%include "DesiredName.i"を使ってインクルードすることができます。出力はありますか? –