2009-07-24 16 views
3

重複の可能性不要の#include文を削除:
C/C++: Detecting superfluous #includes?
How should I detect unnecessary #include files in a large C++ project?自動的

こんにちは、

が、私はCのビルド時間を短縮する方法について、多くの議論を追ってきました/ C++プロジェクト通常、適切な最適化は、前方宣言を使用して#include文を取り除くことです。

C/C++ヘッダー ファイル(Linux上でmkdepがこれを行うことができることはわかっています)間の#include依存関係ツリーを計算するツールがあるかもしれませんが、 'ヘッダファイルを削除/再コンパイル'サイクル?ツールが依存関係ツリーからノードを削除しようとする(例えば、ファイルから#include文を削除する)ことができれば、プロジェクトを再構築してまだ動作しているかどうかを確認することは素晴らしいことです。

(値の代わりにポインタを使ってヘッダファイルを必要としないようにコードをリファクタリングするなど)、私が取り組んでいる多くのプロジェクトでは、不要な#include文が必要でした。これは、通常、コードをリファクタリングして移動させることで発生しますが、#includeを忘れることは忘れてしまいます。

このようなツールが存在するかどうかは誰にも分かりますか?

+2

可能な重複:http://stackoverflow.com/questions/614794/cc-detecting-superfluous-includes and http://stackoverflow.com/questions/74326/how-should-i-detect-unnecessary-include-大規模なCプロジェクトのファイル – dfa

+0

複数の構成(プラットフォームまたはビルドオプションのいずれか)をビルドする必要がある場合、他のビルドを中断したくないので、この問題はより複雑になります。別のことは、依存関係を自動的に最小限に抑えるというあなたの目標は、各インクルードファイルを自立的に保つことです。 – AProgrammer

+0

8Gb + RAMを搭載したx86_64のビルドボックス、最大のL1/L2キャッシュを備えた高速マルチコアCPUは、ビルド時間の最適化の問題に強硬ですが迅速かつ安価なアプローチです。かなりのコードベースで個人的な経験からそれを伝えることができます:-)さらに、最初のビルドは時間がかかります。増分変更を行っている場合は、ごくわずかなモジュールしか再コンパイルしないでください。また別の角度から。 –

答えて

1

ここではこれに似た疑問がたくさんあります。これまでは、従属グラフやhilight multiple includesなどのリストを表示するためのツールはありませんでした(お気に入りはdoxygenと思われます)。ファイル自体の編集はずっと少ないです。だから私はアンサーが "いいえ"になると思うだろう - しかし、私は間違っていることを喜んでいるだろう!