2017-08-06 7 views
1

私は余分なクリーニングに役立つ「使用するものを含める」というツールについて、私のソースコードから を含んでいます。コンパイラLLVM(clang)用のバージョンとgcc用のバージョンがあることを理解しました。 私の質問は です1.なぜこのツールはコンパイラ依存であり、コンパイラにとっては "クロスプラットフォーム"ではありません。なぜ最初から ツールの作成者はコンパイラに依存しないのですか?それは特殊な実装に関連しているのですか? などありますか? 2. llvmと互換性のあるバージョンのツールを使用したい場合、gccと互換性を持たせたい( gccで作業しているので)。私はそれのために何をしなければならないのですか?"使用するものを含める"

+1

このツールは、clangが提供するAPIのみに依存しています。ほとんどのコンパイラはツーリングを念頭に置いて開発されておらず、そのようなツールを作るための適切な情報を公開していません。コードはclangでうまくコンパイルする必要があるので、引き続きgccを使用する必要がある場合は、そのコードを使ってツールを実行してください。ツールをgccに移植することは不可能であるか、少なくとも大規模な作業です。 – xaxxon

答えて

0

ほとんどの場合、コードベースがgccかclangのどちらを念頭に置いているかにかかわらず、Include-What-You-Useは有効なC++コードベースを処理できなければなりません。私は最近、通常gccでコンパイルされた非常に大きなコードベースでInclude-What-You-Useを実行する機会を得ました。そういう意味ではすでに互換性があります。

つまり、完全には機能しない可能性があります。それが提供する情報のいくつかは、たとえそれが脆弱なコードベースであっても間違っている可能性があります。したがって、常に出力を手動で確認してください。

関連する問題