llvm预处理器g ++通过

时间:2010-02-16 12:05:32

标签: g++ llvm stage

假设我想编写自己的预处理器。

所以我想要这样的事情:

所有* .cpp和* .hpp(甚至是包含的),在他们转到g ++之前,他们会去:

file --> my preprocessor -> g++

在LLVM框架中有一种简单的方法吗?即添加一个说:“在加载源文件之后,在编译它之前通过该程序管道”?

谢谢!

2 个答案:

答案 0 :(得分:1)

思路:

  1. 哈克cpp。您可以轻松(-no-integrated-cpp)拨打gcc来调用您的cpp版本,该版本将调用真实cpp
  2. 请求gcc -E,收集包含的文件名,使用您的程序读取所有文件,删除“#include”行。
  3. 制作预处理器构建步骤,将所有文件转换为中间形式。 * .cppanon - > * .cpp - > *的.o; * .hppanon - > * .HPP;
  4. 放弃挂钩“#define”的想法。
  5. 创建将过滤后的数据呈现给gcc的FUSE文件系统。
  6. 变体偏好:4,3,1,2,5。

答案 1 :(得分:0)

是的,让Clang驱动程序做你想做的事情会很容易,虽然它不能完全支持你想要开箱即用的东西。