G++ llvm预处理器g++;通行证

G++ llvm预处理器g++;通行证,g++,llvm,stage,G++,Llvm,Stage,假设我想编写自己的预处理器 所以我想要这样的东西: 所有*.cpp和*.hpp(甚至包括在内的那些),在转到g++之前,它们都会: file --> my preprocessor -> g++ 在LLVM框架中有没有一种简单的方法可以做到这一点?i、 e.添加一个阶段,上面写着:“加载源文件后,在编译之前通过管道将其传输到该程序中” 谢谢 想法: 黑客cpp。您可以轻松(-无集成cpp)使gcc调用您的cpp版本,该版本将调用realcpp 请求gcc-E,收集包含的文件名,用程

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

所以我想要这样的东西:

所有*.cpp和*.hpp(甚至包括在内的那些),在转到g++之前,它们都会:

file --> my preprocessor -> g++
在LLVM框架中有没有一种简单的方法可以做到这一点?i、 e.添加一个阶段,上面写着:“加载源文件后,在编译之前通过管道将其传输到该程序中”

谢谢

想法:

  • 黑客
    cpp
    。您可以轻松(
    -无集成cpp
    )使
    gcc
    调用您的
    cpp
    版本,该版本将调用real
    cpp
  • 请求
    gcc-E
    ,收集包含的文件名,用程序读取所有文件,删除“#include”行
  • 进行预处理器构建步骤,将所有文件转换为中间格式。*。cppanon->*.cpp->*.o;*。hppanon->*.hpp
  • 放弃钩住“定义”的想法
  • 创建FUSE文件系统,将过滤的数据呈现给gcc

  • 变体首选项:4,3,1,2,5。

    是的,可以很容易地让Clang驱动程序实现您想要的功能,尽管它不支持您想要的现成功能。

    您使用的是llvm gcc还是Clang?另外,你的意思是你想在编译器获取文件之前(即#include指令中的某种钩子)以某种方式预处理#include文件吗?我愿意使用这两种方法。我希望在执行标准的#define宏之前调用我的层。/*请求的标记:cpp preprocessor*/