web-dev-qa-db-ja.com

階層とともにgccでコンパイルされたプロジェクトで使用されるヘッダーファイルを一覧表示します

私は現在、2つの異なるソース管理システムにまたがるC++プロジェクトを持っています。最初のシステムから2番目のシステムに完全なソースコードをチェックインせずに、ビルドされるサポートライブラリのみをチェックインする予定です。私の問題は、コンパイルできるように、2番目のソース管理システムで使用する最初のソース管理システムからのヘッダーファイルが必要になることです。 Solarisでコンパイルするときに使用するヘッダーファイルのすべての名前をgccに出力させる簡単な方法はありますか?どのファイルに他のどのヘッダーファイルが含まれているかを確認できるように、ヘッダーファイルの依存関係の階層を生成する方法はありますか?階層が#pragmaについて一度知って、依存関係ツリーに複数回含まれていない重複が含まれないようにすることは可能ですか?

5
Andrew Stern

実行gcc -Mは、特定のソースファイルで使用されるヘッダーファイルのリストを生成します。またはgcc -MMシステムヘッダーを省略します。オプションはそのソースファイルのビルド依存関係を生成することを目的としているため、出力はメイクファイル形式です。出力フォーマットを微調整する方法はいくつかあります。GCCマニュアルで利用可能なプリプロセッサオプションを参照してください。デフォルトの出力は次のようになります。

foo.o: foo.c some_header.h ../include/other_header.h \
        ../../common/include/yet_another_header.h

これ 1992年の論文 一部のAT&T Researchの人々は、Cファイルに対してこれを行うツール「incl」について説明していますが、私が知る限り、「incl」は広大な世界に到達することはありませんでした。

0
Bruce Ediger