4

関連する質問: MSVC プリプロセッサとコンパイラを 2 つの別々の手順で実行するにはどうすればよいですか?

MyFile.cpp(コンパイルではなく) a をa に明示的に前処理し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 でコンパイルできるフラグはありますか?

4

1 に答える 1

5

cl.exeこれらの2つのフラグがあります

  • /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、それは宣伝どおりに動作します

于 2011-12-23T15:38:14.797 に答える