MSVS C ++, как скомпилировать уже предварительно обработанный файл с расширением * .i? - PullRequest
4 голосов
/ 23 декабря 2011

Смежный вопрос здесь: Как запустить препроцессор и компилятор MSVC в два отдельных этапа?

Я явно предварительно обрабатываю MyFile.cpp (не компилирую) до MyFile.i. Позже я хочу «скомпилировать» этот файл (было бы неплохо пропустить предварительную обработку, но, как предполагает связанный с этим вопрос, похоже, что это невозможно с MSVS.)

ПРОБЛЕМА: MyFile.i является «нераспознанным расширением», а cl.exe предполагает, что это «объектный файл», что приводит к «без операции». (См. Предупреждение Microsoft: http://msdn.microsoft.com/en-us/library/zfsbakc5(v=VS.90).aspx, это предупреждение активно для MSVS 2005, 2008, 2010).

Я не могу найти переключатель, чтобы утверждать, что это «исходный файл» (не объектный файл). Соответствующий вопрос явно использовал соглашение "MyFile_preprocessed.cpp", но я бы предпочел остаться с (более универсальным) соглашением MyFile.i.

ВОПРОС: Есть ли флаг, где я могу скомпилировать MyFile.i с MSVS?

1 Ответ

5 голосов
/ 23 декабря 2011

cl.exe имеет эти два флага

  • /Tc<source file> скомпилировать файл как .c

  • /Tp<source file> скомпилировать файл как .cpp

, позволяющий компилировать файлы с произвольным расширением как c или c ++ файлы

Я попытался скомпилировать main.iсо следующим содержимым

#include <iostream>

using namespace std;

int main()
{
    cout << "Hello world \n";
    return 0;
}

с cl /Tp main.i и работает как рекламируется

...