Ivm препроцессор G ++ проходит - PullRequest
3 голосов
/ 16 февраля 2010

Предположим, я хочу написать свой собственный препроцессор.

Итак, я хочу что-то вроде этого:

все * .cpp и * .hpp (даже включенные), прежде чем перейти на g ++, они идут:

file --> my preprocessor -> g++

Есть ли простой способ сделать это в рамках LLVM? т.е. добавить на этапе, который говорит: «после загрузки исходного файла передайте его через эту программу перед его компиляцией»?

Спасибо!

Ответы [ 2 ]

1 голос
/ 26 марта 2010

Идеи:

  1. Взломать cpp. Вы можете легко (-no-integrated-cpp) заставить gcc назвать свою версию cpp, которая будет называться реальной cpp.
  2. Запрос gcc -E, собрать включенные имена файлов, прочитать все эти файлы в вашей программе, удалив строки "#include".
  3. Сделайте шаг сборки препрепроцессора, который преобразует все файлы в промежуточную форму. * .cppanon -> * .cpp -> * .o; * .hppanon -> * .hpp;
  4. Откажитесь от идеи перехвата "#define".
  5. Создать файловую систему FUSE, которая будет представлять отфильтрованные данные в gcc.

Вариант предпочтения: 4,3,1,2,5.

0 голосов
/ 29 марта 2010

Да, было бы очень легко заставить драйвер Clang делать то, что вы хотите, хотя он не имеет поддержки именно того, что вы хотите из коробки.

...