OFF-SOFT.net

ウェブやソフトウェアに関するサポート&情報サイトです。サイト構築からソフトウェアの作成、利用まであなたの助けになるかも・・・・しれません。たぶん・・。

Qt (B3) Qt と doxygen

公開日| 2009年07月09日 | コメントはまだありません。
概要 :
 今回は、Qtのドキュメント管理について、記述したいと思います。
ドキュメント管理と言っても、Qtで作成したソフトウェア(ライブラリ)の詳細な設計書の意味でのドキュメント管理のことです。

 ソフトウェア(ライブラリ)の詳細な設計書のようなドキュメント管理として、Freeで最も有名なところで、doxygenがあります。
このdoxygenは、もともとQtのドキュメント管理をすることを目的に作成されています。(筆者は、最近まで、そんなこと知りませんでした。)

 そのため、doxygenは、Qtとの親和性が強いとされています。(当然、signals,slotsなどもちゃんと認識して、ドキュメントへ出力します。)

 今回は、そのdoxygenを使って、簡単なドキュメント作成について記述したいと思います。


ここで使用したサンプルソースコード:

まずは、doxygenをインストール
doxygenを上記のダウンロードサイトから最新をダウンロードします。
また、継承関係やUMLなどの図が必要なら、graphvizも同じようにダウンロードします。

いずれも、Windows版は、インストーラですので、画面に従いインストールするだけです。

以下に簡単な画面のみを記載しておきます。

[doxygen]



ここで、同意するを選択する。


ここで、インストール先を変更する場合のみ、上記に設定する。


ここは、インストール対象を指定しますが、特別、GUIツールやサンプルが不要でない限り全てチェックで良いと思います。


ここで、スタートメニューに追加する名前を指定する。
スタートメニューに追加したくない場合は、"Don't create start menu folder"にチェックを入れる。


特に問題なければ、"Install"をクリックしてインストールを実行する。




特に問題なく、インストールできたら、上記の画面が表示され、"Next"をクリックする。
この画面は、最新版のチェックやフォローアップのリンク先などが記載されています。


この画面で終了です。"Finish"をクリックして完了。


[graphviz]



ここで、インストール先を変更する場合のみ、上記に設定する。


特に問題なければ、"Next"をクリックしてインストールを実行する。




特に問題なく、インストールできたら、上記の画面が表示され、終了です。"Close"をクリックして完了。


インストールを終えたら、正しくパスが設定されているか確認しましょう。
DOSプロンプト画面を表示します。
[スタート]-[プログラム]-[アクセサリ]-[コマンドプロンプト]

以下の2つのコマンドを入力してみましょう。

C:\> doxygen -h
Doxygen version 1.5.9
Copyright Dimitri van Heesch 1997-2008

You can use doxygen in a number of ways:

1) Use doxygen to generate a template configuration file:
    doxygen [-s] -g [configName]

    If - is used for configName doxygen will write to standard output.

2) Use doxygen to update an old configuration file:
    doxygen [-s] -u [configName]

3) Use doxygen to generate documentation using an existing configuration file:
    doxygen [configName]

    If - is used for configName doxygen will read from standard input.

4) Use doxygen to generate a template file controlling the layout of the
   generated documentation:
    doxygen -l layoutFileName.xml

5) Use doxygen to generate a template style sheet file for RTF, HTML or Latex.
    RTF:   doxygen -w rtf styleSheetFile
    HTML:  doxygen -w html headerFile footerFile styleSheetFile [configFile]
    LaTeX: doxygen -w latex headerFile styleSheetFile [configFile]

6) Use doxygen to generate an rtf extensions file
    RTF:   doxygen -e rtf extensionsFile

If -s is specified the comments in the config file will be omitted.
If configName is omitted Doxyfile' will be used as a default.

C:\> dot -?
Usage: dot [-Vv?] [-(GNE)name=val] [-(KTlso)<val>] <dot files>
(additional options for neato)    [-x] [-n<v>]
(additional options for fdp)      [-L(gO)] [-L(nUCT)<val>]
(additional options for memtest)  [-m]
(additional options for config)  [-cv]

 -V          - Print version and exit
 -v          - Enable verbose mode
 -Gname=val  - Set graph attribute 'name' to 'val'
 -Nname=val  - Set node attribute 'name' to 'val'
 -Ename=val  - Set edge attribute 'name' to 'val'
 -Tv         - Set output format to 'v'
 -Kv         - Set layout engine to 'v' (overrides default based on command name)
 -lv         - Use external library 'v'
 -ofile      - Write output to 'file'
 -O          - Automatically generate an output filename based on the input 
            filename with a .'format' appended. (Causes all -ofile options to be ignored.)
 -P          - Internally generate a graph of the current plugins.
 -q[l]       - Set level of message suppression (=1)
 -s[v]       - Scale input by 'v' (=72)
 -y          - Invert y coordinate in output

 -n[v]       - No layout mode 'v' (=1)
 -x          - Reduce graph

 -Lg         - Don't use grid
 -LO         - Use old attractive force
 -Ln<i>      - Set number of iterations to i
 -LU<i>      - Set unscaled factor to i
 -LC<v>      - Set overlap expansion factor to v
 -LT[*]<v>   - Set temperature (temperature factor) to v

 -m          - Memory test (Observe no growth with top. Kill when done.)

 -c          - Configure plugins (Writes $prefix/lib/graphviz/config
               with available plugin information.  Needs write privilege.)
 -v          - Enable verbose mode

C:\>

上記のようにヘルプテキストが表示されればOKです。
そうでない場合は、自身で、環境変数のPATHに、以下のディレクトリを追加します。
  • %doxygenインストール先ディレクトリ%\bin
  • %graphvizインストール先ディレクトリ%\bin

doxygenを使ってみましょう
サンプルソースコードを準備しましょう
doxygenを使ってみるためにサンプルのソースコードが必要です。
ここでは、doxygenのサンプルであるexamples\diagramsを、Qtらしく(signals,slotsを追加したもの)、一部、変更したものを使ってみましょう。
クラスは、以下の5つのファイルからなります。
  • diagrams_a.h
    -- class A を定義
    -- 継承元なし
  • diagrams_b.h
    -- class B を定義
    -- 継承元 QMainWindow(Qtクラス)
  • diagrams_c.h
    -- class C を定義
    -- 継承元 A
  • diagrams_d.h
    -- class D を定義
    -- 継承元 A,B
  • diagrams_e.h
    -- class E を定義
    -- 継承元 D

[diagrams_a.h]
1
2
3
4
5
6
7
8
#ifndef _DIAGRAMS_A_H
#define _DIAGRAMS_A_H
class A 
{
public: 
	A *m_self;
};
#endif

[diagrams_b.h]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef _DIAGRAMS_B_H
#define _DIAGRAMS_B_H
#include <QMainWindow>
class A;
class B : public QMainWindow
{
	Q_OBJECT
public: 
	A *m_a;
 
protected slots: 
	void slotB(int n);
 
signals: 
	void sigB(int n);
};
#endif

[diagrams_c.h]
1
2
3
4
5
6
7
8
9
10
#ifndef _DIAGRAMS_C_H
#define _DIAGRAMS_C_H
#include "diagrams_c.h"
class D;
class C : public A 
{
public:
	D *m_d;
};
#endif

[diagrams_d.h]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#ifndef _DIAGRAM_D_H
#define _DIAGRAM_D_H
#include "diagrams_a.h"
#include "diagrams_b.h"
class C;
class D : virtual protected  A, private B 
{
	Q_OBJECT
public: 
	C m_c;
 
protected slots: 
	void slotD(int n);
 
signals: 
	void sigD(int n);
};
#endif

[diagrams_e.h]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#ifndef _DIAGRAM_E_H
#define _DIAGRAM_E_H
#include "diagrams_d.h"
class E : public D 
{
	Q_OBJECT
 
private slots: 
	void slotE(int n);
 
signals: 
	void sigE(int n);
};
#endif

doxygenのconfigファイル(パラメータファイル)を作成しましょう
次に、doxygenを使ってみるためにdoxygenのパラメータを設定したファイル(configファイル)が必要です。
ここでは、doxygenのサンプルであるexamples\diagramsを、変更したものを使ってみましょう。

パラメータ名 解説
PROJECT_NAME プロジェクト名を指定します。
例)"Diagrams"
OUTPUT_DIRECTORY 出力先ディレクトリ名(論理パス)を指定します。
例)diagrams
HAVE_DOT DOTツール(図)を使うかどうかを指定します。
例)YES
EXTRACT_ALL 全てのドキュメントのエンティティ(要素)を展開するか指定します。
例)YES
GENERATE_LATEX LATEXフォーマットで出力するか指定します。
例)NO
GENERATE_MAN MANフォーマットで出力するか指定します。
例)NO
GENERATE_RTF RTFフォーマット(MiscroSoft Word)で出力するか指定します。
例)NO
CASE_SENSE_NAMES Doxygenで出力するファイル名を大文字にするか指定します。(NO:小文字で出力します)
例)NO
ENABLE_PREPROCESSING Cプリプロセッサの評価を行うか指定します。
例)YES
INPUT 対象ファイルのディレクトリ(論理パス)を指定します。
例).
FILE_PATTERNS 対象ファイルのパターンを指定します。
例)diagrams_*.h
QUIET Doxygenでメッセージが常に表示するかを指定します。(NO:表示する)
例)YES
JAVADOC_AUTOBRIEF JvaDoc形式でのコメントを有効にするか指定します。
例) YES
QT_AUTOBRIEF Qt形式でのコメントを有効にするか指定します。
例) YES
EXTRACT_PRIVATE privateメソッド、メンバーを出力するか指定します。
例) YES

ざっと、これぐらいのパラメータを意識しておけば、とりあえず、ドキュメントを作成できます。
これを、diagrams.cfg のファイル名で保存します。以下は、その中身です。単純なテキストファイルです。

[diagrams.cfg]
PROJECT_NAME       = "Diagrams"
OUTPUT_DIRECTORY   = diagrams
HAVE_DOT           = YES
EXTRACT_ALL        = YES
GENERATE_LATEX     = NO
GENERATE_MAN       = NO
GENERATE_RTF       = NO
CASE_SENSE_NAMES = NO
ENABLE_PREPROCESSING       = YES
INPUT              = .
FILE_PATTERNS      = diagrams_*.h
QUIET              = YES
JAVADOC_AUTOBRIEF = YES
QT_AUTOBRIEF      = YES
EXTRACT_PRIVATE        = YES

doxygenでドキュメントを作成しましょう
ここまで準備できたら、doxygenは、コマンドから以下のように入力することでドキュメントを作成できます。

%diagrams.cfgのあるディレクトリ%> doxygen diagrams.cfg
%diagrams.cfgのあるディレクトリ%> 

簡単ですね。ファイル名を指定するだけです。
完了すると、先のconfigファイルに指定したように論理パスのdiagramsへhtmlというディレクトリが作成されていると思います。
その中のindex.htmlをクリックして、表示してみましょう。


以下は、クラスBを表示した画面です。


ちゃんと、継承関係が図で表示されています。また、シグナル、スロットも正しく表示されています。


doxygenには、他に、QtAssistantで使うHELPファイルを作成することができます。
このあたりが、親和性が高いというところですね。
では、次に、QtAssistantで使うHELPファイルを作成してみましょう。



ブックマークへ追加: はてなブックマークへ追加するdel.icio.usLivedoor ClipYahoo!FC2Nifty ClipPOOKMARK. AirlinesBuzzurl(バザール)Choixnewsing

Trackback URL

このコメントは管理人から承認された後、表示されます。


コメント

コメントをどうぞ





*





donate red cross
がんばろう、日本!
日本赤十字の募金は、Googleで受け付けてます。
http://www.google.co.jp/intl/ja/crisisresponse/japanquake2011.html

義援金詐欺・フィッシングサイトにご注意ください。

コンテンツ

最近の記事


タグクラウド

リンク

このサイトは?

ウェブやソフトウェアに関するサポート&情報サイトです。サイト構築からソフトウェアの作成、利用まであなたの助けになるかも・・・・しれません。たぶん・・。

ブックマークへ追加

はてなブックマークへ追加するdel.icio.usLivedoor ClipYahoo!FC2Nifty ClipPOOKMARK. AirlinesBuzzurl(バザール)Choixnewsing