4

github でホストされる C++ プロジェクトに Doxygen を使用しています。

readme ファイルにクラスのメソッドのリストを含めたいのですが、それを自動化する方法を考えています。

生成された html ページ全体をレポジトリに含めますが、メイン クラスのメンバーを readme ファイルに含めることで、API の概念を示すとよいと思います。

これまでのところ、マークダウン ファイルを生成する方法が見つかりませんでした。私の次のアイデアは、メンバー リストを自動的にコピーして readme ファイルに含めるシェル スクリプトを作成することでした。そのためには、クラスのメンバー関数のリストを個別に生成する必要があります。

クラスのメンバーのリストを個別に出力するように doxygen を設定することは可能ですか?

4

2 に答える 2

4

最近、パブリックAPIの一部としていくつかの関数を識別したいプロジェクトがありました。それらをREADMEファイルに入れる必要性を感じなかったので、私がしたことは実際にはあなたが求めているものではありませんが、潜在的な妥協点を見つけるかもしれません。

私は次のグループを作成しました:

/**
\defgroup public_api Public API
\brief This is a list of the primary functions that comprise the
public API.

*/

それから私はそれをメインページで参照しました:

/**

\mainpage Some Project

...

See \ref public_api "Public API" for details on these functions.

*/

次に、各パブリックAPI関数をそのグループに含まれるものとして明示的にマークしました。

/**
\brief Perform any necessary initialisation before processing.

\ingroup public_api

This function must be called prior to any of the other public
api functions to allow initialisation to be performed prior to use.


 */
void init();

最終的な結果は、メインページからリンクされている単一ページの関数のリストです。私はこれがあなたが求めているものではないことを知っていますが、doxygenがすべてのドキュメントをナビゲートしやすい単一の場所に持ってくるようなものです。

問題を満足のいくように解決した場合は、投稿してください。私は常にdoxygenの非定型的な使用に興味があります。

于 2012-11-07T22:17:40.747 に答える
1

doxygen XML 出力からクラスのメンバーのリストを抽出できます。構成ファイルで に設定GENERATE_XMLするYESと、次のような xml ファイルが生成されます。

xml/classTest.xml

<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.7.6.1">
<compounddef id="classTest" kind="class" prot="public">
<compoundname>Test</compoundname>

  <sectiondef kind="public-func">

      <memberdef kind="function" id="classTest_1a99f2bbfac6c95612322b0f10e607ebe5" 
         prot="public" static="no" const="no" 
         explicit="no" inline="no" virt="non-virtual">

         <type></type>
         <definition>Test::Test</definition>
         <argsstring>()</argsstring>
         <name>Test</name>
         <briefdescription>  </briefdescription>
         <detaileddescription>
               <para>A constructor. A more elaborate description of the constructor. </para>        
         </detaileddescription>
         <inbodydescription>  </inbodydescription>
        <location file="/home/davidl/SO/test.cpp" line="23"/>
      </memberdef>

  </sectiondef>
</compounddef>
</doxygen>
于 2012-11-04T19:22:34.177 に答える