在Visual Studio 10项目中同时使用/YC和/MP

Using /YC and /MP together in a Visual Studio 10 project

本文关键字:YC MP Studio Visual 项目      更新时间:2023-10-16

我正试图绕过/YC和/MP互斥的限制。我想利用预编译头和多进程编译。

到目前为止,我的答案是创建2个项目,而不是1个。第一个是pch生成库,仅由stdafx.h和stdafx.cpp组成

该库成功生成pch文件!附带说明一下,pch库项目还指定了指向其stdafx.h的/YU和引用输出pch文件的/Fp。

我的第二个项目是我的主要可执行文件。它已经指定了/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文件?

如有任何帮助,我们将不胜感激!

试试这个:如果我使用/Yc ,visual C++会检查它是否需要重新生成它的pch吗

您基本上为stdafx.cpp设置/Yc,为所有其他*.cpp文件设置/Yu+/MP。

要分别为每个文件设置标志,请右键单击解决方案资源管理器上的cpp文件,然后选择"属性"。