
Doxygenの#includeプリプロセスについて質問があります。
あるCソースファイル内に、記述「#include"foo.h"」があったとします。Cコンパイラはサーチパスにもとづいて、ファイル「foo.h」を探して貼り付ける様に展開してくれます。ここで、Doxygenも同じように、自動的にファイルを検索して展開してくれるのでしょうか?とりあえず、自動的にしてくれるに違いないと思っているのですが・・・。希望の結果が得られません。下記のようなファイルを用意してみました。
----- doxygen.config ここから -----
WARN_LOGFILE = doxygen.log
OPTIMIZE_OUTPUT_FOR_C = YES
EXTRACT_ALL = YES
INPUT = src1.c src2.h
SEARCH_INCLUDES = YES
INCLUDE_PATH = .
INCLUDE_FILE_PATTERNS = *.h
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = YES
----- src1.c ここから -----
#include "src2.h"
#include "src3.h"
int a, b;
int main(void) {
int a, b, c;
a = add( 1, 2 );
b = sub( 4, 5 );
}
----- src2.h ここから -----
int add( int a, int b ) {
return( a + b );
}
----- src3.h ここから -----
int sub( int a, int b ) {
return( a - b );
}
----- ここまで -----
上記ファイルをカレントディレクトリに置き、コマンド「doxygen doxygen.config」を実行しています。出来上がったファイル「html/index.html」から、タブ「Files->Globals->Functions」と開いてみると、add()はあってもsub()は見当たりません。add()は意図的にINPUTの項目に入れているので難なく盛り込まれます。sub()が自動的に入ってくれないかと期待しましたが、src3.h内のsub()は盛り込まれなかったようです。また、doxygen.logには何も書き込まれていません。
予想と質問みたいなのを書いてみました。
(1) 私の思い違いですよ・・・?
(doxygenは#includeでファイルのコード展開まではしてくれない。
コードはINPUTに明示的に入れなさい。そもそも、ヘッダファイルに
ファンクションの実体を書くのがいかん。)
(2) Configファイルに書き間違いがあるよ・・・
うまくできるパラメータ記述がありましたら、教えてください。
(3) その他解決策やご意見がございましたら、教えてください。
環境
(1) Celelon, Windows XP SP2, コマンドプロンプト, doxygen 1.5.4
(2) x86_64, Readhat Linux 2.6.9, doxygen 1.3.9.1
Windows,Linuxともに同じ結果となりました。
考え違いがあるかもしれませんが、ご助力願えたらと思っています。
よろしくお願いいたします。 m(_ _)m
Magna
No.2ベストアンサー
- 回答日時:
記憶に頼っての回答なので不確かですが...
INCLUDE_PATHを設定すればプロプロセス時の検索対象にはなりますが、入力ファイルではないので展開はされません。展開する必要があるならINPUTで指定する必要があります。
参考URL:http://www.doxygen.jp/config.html#cfg_include_path
jactaさん
有用なページを教えてくださってありがとうございます。下記の一文は、そのまんまですね。自力で見つけるべき場所です・・・スイマセン(汗)。
http://www.doxygen.jp/config.html#cfg_include_path
> INCLUDE_PATH
> INCLUDE_PATH タグを使用して、1つまたはそれ以上のディレクトリ ―
> 入力ファイルにはならないけれども、 プリプロセッサによって処理さ
> れるべきインクルードファイルを含むディレクトリ ― を指定するこ
> とができます。
jactaさん worte:
> 展開する必要があるならINPUTで指定する必要があります。
入力ファイルにならない・・・つまり、Cコンパイラのようなプリプロセス処理をおこなってくれるわけじゃなさそうですよねぇ。残念。結論として、ご助言のとおり、ヘッダファイルに記述された内容もドキュメントにしっかり反映させたいならば、INPUTなど一連のルールにマッチさせる必要がある。入力ファイルとして認識させなければ成らない。となるようです。
本当に、ありがとうございました。
No.1
- 回答日時:
INPUTにファイル名を書くのではなく、ディレクトリを書けば、その中のファイルが対象になったはずです。
この回答への補足
jactaさん
早速の回答ありがとうございます。一つの回避案になります。
INPUTにディレクトリを記述して、RECURSIVE,FILE_PATTERNやEXCLUDE_***などのルールをうまく設定することで、所望のファイルを一気に読み込めるようにできますね。多数のファイルを扱う時など、とても有効な手段だと思います。これは言い換えれば、INPUTにすべてのファイルを明示的に記述することと同等かなぁと思っています。
読み込むファイルは、INPUTやFILE_PATTERNなどで明示的に与えなければならない。ルールにマッチさせ読み込ませるという手法をとらないといけないという事でしょうか。コンフィグファイルのSEARCH_INCLUDE、INCLUDE_PATHやENABLE_PREPROCESSINGのコメントを読んで、#incude"foo.h"をCコンパイラのように指定パスから探して展開してくれる・・・と期待して実験しております。ご存知ないですか?
Magna wrote:
> (1) 私の思い違いですよ・・・?
> (doxygenは#includeでファイルのコード展開まではしてくれない。
(後略)
やはり、doxygenはソースファイル内に記述された#includeのファイルを、INCLUDE_PATHから探し出し、展開するなんてことはしてくれないのかなぁ・・・私の理解が足りない点がありましたら、ぜひ、ご教授ください。
お返事、とても助かります(^^)。
もうすこしがんばってみます。
Magna
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# C言語のファイル入力が分かりません 2 2022/05/22 06:35
- WordPress(ワードプレス) wordpressでphpを読み込みたい 1 2022/10/30 23:40
- C言語・C++・C# プログラミングのペーパーテスト 実行結果の表示を答えてください #include <stdio.h> 2 2022/07/09 16:14
- C言語・C++・C# #include <stdio.h>int main(void) { int buf[100] = 6 2022/11/01 22:45
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
自分で作成した重要ファイルを...
-
jarファイル
-
Windows10のScilabのV6.1.1に関...
-
binファイルを解凍したいの...
-
既に開いているエクセルを閉じ...
-
VBAでのicsファイル変換
-
コマンドプロンプトで作成日時...
-
Latexで図番号だけを「図1.1」...
-
Seasar2のdiconファイルの読み方
-
アクセス権のチェック方法について
-
エクセルvbaについて
-
dreamweaverの並び替え
-
frm、frxファイル
-
バッチ処理で追記コピーしたい
-
ストレージにある全てのファイ...
-
HPにBGMをつけたいのですが・・...
-
CSSファイルの日本語コメントが...
-
ファイル圧縮形式の変更について
-
Access のファイルの「安全でな...
-
Excel2010VBAからWordの呼び出し
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
binファイルを解凍したいの...
-
アクセス 壊れた? 「ファイ...
-
コマンドプロンプトで作成日時...
-
.NETアプリを作ったときの .man...
-
リンクの張り付けかたを教えて...
-
#include <Windows.h>というヘ...
-
Latexで図番号だけを「図1.1」...
-
jarファイル
-
「ブルーファイル」と「グリー...
-
ファイルが開かれているかどう...
-
バッチ処理で追記コピーしたい
-
VBAのバイナリ出力について
-
公文書のxmlファイルの開き方が...
-
コマンドプロンプトで、指定し...
-
監視ツールを入れさせられまし...
-
自分で作成した重要ファイルを...
-
HTMLからのBATファイル実行
-
VBSが起動しない
-
他のMDBのマクロを実行する方法
-
Batファイルをバイナリ形式にす...
おすすめ情報