在Visual Studio 10项目中一起使用/ YC和/ MP

时间:2013-02-09 00:07:32

标签: c++ visual-studio-2010 visual-studio winapi precompiled-headers

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

到目前为止我的答案是创建2个项目而不是1.第一个是pch生成库,它只包含stdafx.h和stdafx.cpp。它在stdafx.cpp

上生成带有/ YC的pch文件

该库成功生成pch文件!另外,pch库项目还指定了/ YU指向其stdafx.h和/ Fp引用输出pch文件。

我的第二个项目是我的主要可执行文件。它具有/ 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文件?

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:7)

试试这个:Does visual C++ check if it needs to re-generate its pch if I use /Yc

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

要为每个文件单独设置标记,请右键单击解决方案资源管理器中的cpp文件,然后选择“属性”。