6

/YC と /MP が相互に排他的であるという制限を回避しようとしています。プリコンパイル済みヘッダーとマルチプロセス コンパイルを活用したいと考えています。

これまでの私の答えは、1 つではなく 2 つのプロジェクトを作成することでした。1 つ目は、stdafx.h と stdafx.cpp だけで構成される pch 生成ライブラリです。stdafx.cpp に /YC が設定された pch ファイルを生成します。

そのライブラリは pch ファイルを正常に生成します! 補足として、pch ライブラリ プロジェクトには、stdafx.h を指す /YU と、出力 pch ファイルを参照する /Fp も指定されています。

私の 2 番目のプロジェクトは、メインの実行可能ファイルです。/MP が指定されていますが、どのファイルにも /YC が指定されておらず、stdafx.h または stdafx.cpp が含まれていません。代わりに、プロジェクトの /YU を pch ライブラリの stdafx.h に設定し、/Fp を pch ライブラリによって生成された pch に設定しました。次に、pch ライブラリを exe プロジェクトの依存関係として設定します。また、exe プロジェクトに /FI を設定して、各コンパイル ユニットに pch ライブラリの stdafx.h を強制的に含めます。

私の問題は、pch ライブラリは pch ファイルを生成し、exe プロジェクトは生成された pch ファイルを正しく参照しているように見えますが、exe プロジェクトがビルドを開始するとすぐに (pch とは関係のないビルド前の手順の後)、 pch ライブラリによって生成された pch を削除します。/Fpが指定されていると、/YCが指定されていなくてもプロジェクトがそのファイルを生成すると考えているためだと思います。

ここで私が間違っていることはありますか?私はステップを逃していますか?ビルドを開始する前に exe プロジェクトが pch ファイルを削除しないようにする方法はありますか?

どんな助けでも大歓迎です!

4

1 に答える 1

9

これを試してください: /Yc を使用する場合、ビジュアル C++ は pch を再生成する必要があるかどうかをチェックしますか?

基本的に、stdafx.cpp には /Yc を設定し、他のすべての *.cpp ファイルには /Yu + /MP を設定します。

ファイルごとに個別にフラグを設定するには、ソリューション エクスプローラーで cpp ファイルを右クリックし、[プロパティ] を選択します。

于 2013-06-05T05:52:36.627 に答える