Я пытаюсь найти самый быстрый способ получить полный предварительно обработанный исходный код (мне не нужна # line информация, другие комментарии, только необработанный исходный код) для исходного файла C.
Iу меня есть следующая небольшая тестовая программа, которая включает в себя только заголовочный файл 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 раза.