Компиляция проекта (VS 2008) с аргументом / p (предварительная обработка в файл) не компилируется - PullRequest
0 голосов
/ 26 августа 2010

У меня есть проект на C ++, который я хотел бы просмотреть на выходе препроцессора, чтобы увидеть, как будут выглядеть некоторые #defines и макросы. Я попытался переключить /p, чтобы включить препроцессор для параметра файла для компилятора (он отключает полную компиляцию и запускает только препроцессор), но мой проект теперь отказывается компилироваться и показывает длинный список ошибок, начинающихся с:

"Невозможно открыть включаемый файл: 'stdafx.h': такого файла или каталога нет".

Конечно, проект компилируется без аргумента /p. Есть предложения?

Ответы [ 2 ]

0 голосов
/ 26 августа 2010

Если вы запускаете cl.exe сам по себе, вам нужно будет указать все те же параметры, что и в среде IDE при сборке, иначе он не сможет найти все пути включения и макросы препроцессора. Однако есть и другой способ сделать это. В файле проекта выберите нужный файл .cpp и выберите «Свойства»> «C ++»> «Препроцессор»> «Создать файл препроцессора». Затем скомпилируйте файл .cpp.

Это сгенерирует предварительно обработанный файл (file.i я думаю) в выходном каталоге. Жаль, что нет простого способа выбрать файл и нажать «препроцесс», но это, вероятно, можно сделать довольно легко с помощью макроса VisualStudio. Не забудьте потом снова установить эту опцию.

0 голосов
/ 26 августа 2010

Все остальные параметры (например, /I) остаются неизменными при компиляции с /p? Похоже, он не собирает ваши заголовочные файлы. С другой стороны, поскольку он пытается предварительно обработать все включения, он больше не генерирует предварительно скомпилированный заголовок stdafx.h - вместо этого можно попробовать просто включить все необходимые заголовки.

...