Я пытаюсь найти самый быстрый способ получить полный предварительно обработанный исходный код (мне не нужна информация #line, другие комментарии, только необработанный исходный код) для исходного файла C.
У меня есть следующая небольшая тестовая программа, которая включает только заголовочный файл Windows (mini.c
):
#include <windows.h>
Используя Microsoft Visual Studio 2005, я запускаю эту команду:
cl /nologo /P mini.c
Создание файла mini.i размером 2,5 МБ занимает 6 секунд; изменить это на
cl /nologo /EP mini.c > mini.i
(который пропускает комментарии и информацию #line) требуется всего 0,5 секунды, чтобы записать 2,1 МБ вывода.
Кто-нибудь знает хорошие методы для дальнейшего улучшения этого, без использования предварительно скомпилированных заголовков?
Причина, по которой я спрашиваю, заключается в том, что я написал вариант популярного инструмента ccache для MSVC. В рамках работы программе необходимо вычислить хеш-сумму предварительно обработанного исходного кода (и еще несколько вещей). Я хотел бы сделать это как можно быстрее.
Может быть, есть специальный двоичный файл препроцессора или другие переключатели командной строки, которые могут помочь?
ОБНОВЛЕНИЕ: Одна идея, которая только что пришла мне в голову: определить WIN32_LEAN_AND_MEAN для удаления большого количества редко используемого кода. Это ускоряет работу вышеуказанного препроцессора примерно в 3 раза.