2010-02-16 5 views
3

내 전처리기를 쓰고 싶다고합시다.llvm 전 처리기 g ++ 전달

그래서 나는 이런 식으로 뭔가를 원하는 :

모든 * 통화 당과 * .HPP (도 포함 된 것)가 가기 전에이 g ++, 그들은 갈 :

file --> my preprocessor -> g++ 

은 쉽게 거기 LLVM 프레임 워크에서이 작업을 수행하는 방법은 무엇입니까? 즉 "소스 파일을로드 한 후이 프로그램을 통해 압축하여 파일을 압축 한 후"라는 단계가 추가됩니다.

감사합니다.

+0

llvm-gcc 또는 clang을 사용하고 있습니까? 또한 컴파일러에서 #include 지시문을 가져 오기 전에 #include 파일을 미리 처리하려는 경우 (즉, #include 지시문에서 어떤 종류의 후크가 필요합니까?) –

+0

둘 중 하나를 기꺼이 사용합니다. #define 매크로를 실행하기 전에 바로 레이어를 호출하고 싶습니다. – anon

+0

/* 요청 된 태그 : cpp preprocessor * / –

답변

1

아이디어 :

  1. 해킹 cpp. (-no-integrated-cpp) gcccpp이라고하는 cpp 버전으로 쉽게 호출 할 수 있습니다.
  2. gcc -E을 요청하고, 포함 된 파일 이름을 수집하고, 프로그램에서 해당 파일을 모두 읽고 "#include"줄을 제거하십시오.
  3. 모든 파일을 중간 형식으로 변환하는 prepreprocessor 빌드 단계를 만듭니다. * .cppanon -> * .cpp -> * .o; * .hppanon -> * .hpp;
  4. "#define"을 후킹하는 아이디어를 포기하십시오.
  5. 필터링 된 데이터를 gcc에 제공하는 FUSE 파일 시스템을 생성하십시오.

변형 우선 순위 : 4,3,1,2,5.

0

예, Clang 드라이버가 원하는 것을 수행하는 것은 매우 쉽습니다.하지만 바로 원하는 것을 바로 지원하지는 않습니다.