我试图绕过 /YC 和 /MP 互斥的限制。我想利用预编译的头文件和多进程编译。
到目前为止,我的回答是创建 2 个项目而不是 1 个。第一个是 pch 生成库,仅包含 stdafx.h 和 stdafx.cpp。它生成 pch 文件,并在 stdafx.cpp 上设置了 /YC
该库成功生成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 文件?
任何帮助将不胜感激!