3

独自のプリプロセッサを書きたいとします。

だから私はこのようなものが欲しい:

すべての *.cpp および *.hpp (含まれているものも含む) は、g++ に移動する前に、次のように移動します。

file --> my preprocessor -> g++

LLVM フレームワークでこれを行う簡単な方法はありますか? つまり、「ソースファイルをロードした後、コンパイルする前にこのプログラムにパイプしてください」というステージを追加しますか?

ありがとう!

4

2 に答える 2

1

アイデア:

  1. ハックcpp。簡単に ( -no-integrated-cpp) makeを呼び出して、 real をgcc呼び出す のバージョンを呼び出すことができます。cppcpp
  2. Request gcc -E、含まれているファイル名を収集し、プログラムでそのすべてのファイルを読み取り、「#include」行を削除します。
  3. すべてのファイルを中間形式に変換するプリプリプロセッサ ビルド ステップを作成します。*.cppanon -> *.cpp -> *.o; *.hppanon -> *.hpp;
  4. 「#define」をフックするという考えは捨ててください。
  5. フィルタリングされたデータを gcc に提示する FUSE ファイルシステムを作成します。

バリアントの好み: 4、3、1、2、5。

于 2010-03-26T03:16:14.620 に答える
0

はい、Clang ドライバーで希望どおりに動作させるのは非常に簡単ですが、すぐに使用できる正確な機能はサポートされていません。

于 2010-03-29T06:01:30.327 に答える