2009-07-13 6 views
8

私は、お互いを含む膨大な数の複雑なヘッダファイルを持つ非常に大きなプロジェクトを持っています。それが依存している膨大な数のサードパーティライブラリもあります。私は混乱をまっすぐにしようとしていますが、いくつかの問題があります。#includeディレクティブを削除するだけで、それが含まれていたものが他のファイルの1つに含まれていることがわかります。これを理解するのに役立つツールはありますか?私は実際に.hファイルをクリックして、それが(直接的または間接的に)どのCPPファイルに含まれているのか、それが含まれているパスを尋ねることができ、同様にcppファイルをクリックしてそれを尋ねることができます。 hファイルが(直接的および間接的に)含まれています。私はこれを行うツールについて聞いたことがないし、グーグル・グーグルでは何も変えていないが、何を探したらいいのか分からない。あなたはGCCコンパイラを使用する場合C++にはファイルブラウザが含まれています

+0

似たような投稿があります:[http://stackoverflow.com/questions/74326/how-should-i-detect-unnecessary-include-files-in-a-large-c-project](http: //stackoverflow.com/questions/74326/how-should-i-detect-unnecessary-include-files-in-a-large-c-project) – Alex

答えて

4
+0

クローズドソースのフリーでないツールを推奨するのはやや悪いですが、これは私の質問には最高の答えです。それは私が必要とするすべてのものをほとんど行い、それほど高価ではありません。私の上司は、ほとんどの部門のライセンスを購入することに決めました。 – rmeador

+0

私は感動したユーザーです!私はまだライセンスを購入しておらず、試用期間中にしか使用していませんが、これまでは非常に便利でした。 –

3

、これは

g++ -M abc.cpp 

それはすべてがVS2003のファイルabc.cpp

+0

私はVisual Studio 2008を使用しています。 – rmeador

4

の依存関係を含め表示されてみてください/ showIncludesフラグが(そこにあるC/C++ /詳細プロパティで)。これにより、各.cppファイルに含まれるヘッダーとそのヘッダーがすべて印刷されるため、ここから移動できます。

VS2008の同じ場所に同じオプションがあることは間違いありません。

+0

これはVS2008、同じ場所で。非常に有望に見えます。それは私の仕事が私が想定していたよりもはるかに難しいとも言います... – rmeador

0

あなたの状況は私自身のことを思い出させます。私はDLLで悩むのではなく、ライブラリとして使用するために作成したヘッダをたくさん持っています。

もちろん

環状含んが面倒になることができますので、私は、Visual のようなツールは、X(1)は、この種のものに役立つアシストことがわかります。これは、物事への参照を見つけることができる関数を持っているので、何かが定義/宣言/インクルードされているところなどから簡単に除外することができます。その他の便利な機能もたくさんあります。

おそらく、参照機能を持つ他のツールやプラグインがありますが、通常はユーティリティの他のリファクタリング機能と生産性機能の1つの機能です。

HTH

0

それはかなり面倒ですが、あなたはバイナリ検索できるの#includeは、#エラー(および#pragmaメッセージ)を使用することによって発生した場所にあなたの方法を引っ張っされている行を含める絞り込みます第三者に私は追跡しようとしていた単一のファイルの場合にこれを行っていますが、あなたの問題がより大きいように聞こえるので、他のツールのほうが効果的です。

関連する問題