2010-02-16 74 views
3

假設我想編寫自己的預處理程序。llvm預處理程序g ++通過

所以我想是這樣的:

所有*的.cpp和* .HPP(甚至包括那些),他們去之前,G ++,他們去:

file --> my preprocessor -> g++ 

是否有一個簡單的在LLVM框架中做到這一點的方法?即添加一個階段,說:「加載源文件後,在編譯之前通過該程序管道」?

謝謝!

+0

你使用llvm-gcc還是clang?另外,你的意思是你想在編譯器獲得它們之前以某種方式預處理#include文件(即#include指令中的某種鉤子)? – 2010-02-16 12:35:47

+0

我也願意使用。 我希望在標準的#define宏執行之前調用我的圖層。 – anon 2010-02-16 21:46:24

+0

/*要求標籤:cpp預處理器* / – 2010-03-26 03:20:21

回答

1

思路:

  1. 哈克cpp。你可以很容易地(-no-integrated-cpp)使gcc打電話給你的cpp版本,這將調用真正的cpp
  2. 請求gcc -E,收集包含的文件名,用程序讀取所有文件,刪除「#include」行。
  3. 進行預處理器構建步驟,將所有文件轉換爲中間格式。 * .cppanon - > * .cpp - > * .o; * .hppanon - > * .hpp;
  4. 放棄掛鉤「#define」的想法。
  5. 創建將過濾數據呈現給gcc的FUSE文件系統。

變體偏好:4,3,1,2,5。

0

是的,讓Clang驅動程序做你想做的事情是很容易的,儘管它並不支持你想要的開箱即用。