2013-04-12 9 views
6

私はCファイルをコンパイルしようとしていますが、それは再帰的にヘッダファイルをたくさん含んでいます。これらのヘッダファイルのリストを探しています。それが含まれるすべてのヘッダーファイルのリストを見つける簡単な方法は?Cファイルに含まれるすべてのヘッダファイルのリスト

+0

さて、.Cファイルを見てください。または、-Eコンパイラー・オプションを使用してマスター・ヘッダーを見ることもできます。 – Shark

+0

ここにGCCのヒントがあります:http://stackoverflow.com/questions/42308/tool-to-track-include-dependencies –

+1

for Visual Studio http://msdn.microsoft.com/en-us/library/hdkef6tk% 28v = vs.90%29.aspx –

答えて

10

それが再帰的に含まれるヘッダのリストをダンプするためのオプションだとあなたはGCC Cプリプロセッサを使用することができます。

cpp -M 

すべてのヘッダーが含まれますが表示されます。

通常のビルドで使用されるすべてのインクルードディレクトリのルーツを与える必要があるでしょう。反復して実行し、エラーが停止するまで、より多くのインクルードパスを追加します。

この用法では、このコマンドの完全な形式は次のとおりです。

cpp -M [-I include_directory *] path_to_c_file.c 
+0

これは再びどのツールチェーンに当てはまりますか? –

+0

これはgcc – piokuc

+0

に適用されます。Ah、thx!私は 'gcc -M'や' g ++ -M'に 'cpp'コマンドをよく知っていて、その特定のオプションは私には新しくありました。再帰的にインクルードされたファイルも追跡しますか?これについて忘れてください、それはスタンドアローンのプリプロセッサです。 –

0

ほとんどのコンパイラは、単にファイルを前処理、それらを作るためにスイッチを持っています。何よりも、#includeのすべてを実際のコードに展開することを意味します。そして、通常は、オリジナルインクルードの行にコメント(適切なCコメント)を含めます。したがって、結果の前処理されたコードをすべてのそのようなコメントに対して検索して、すべてのヘッダーを収集することができます。

+2

通常はコメントではなく、 '#line'ディレクティブです。 –

+1

また、スイッチは通常 '-E'(または'/E')です。 –

2

http://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html#Preprocessor-Optionsに従って、-Hオプションと-Mオプションがこの目的に役立ちます。

http://www.stack.nl/~dimitri/doxygen/を使用してプロジェクトのドキュメントを生成した後、ファイルの依存関係を確認することができます:) C言語、C++、Objective-C、C#、PHP 、Java、Python、IDL(CorbaとMicrosoftのフレーバー)、FORTRAN、VHDL、Tcl。

関連する問題