3

假设我有一个项目,其中包含文件 A.cpp、B.cpp、C.ppp 和匹配的头文件(仅此而已)。C++ 文件包括系统头文件或来自其他模块的头文件。

我想通过命令行操作(例如,使用Make),使用'cl',使用预编译的头文件功能将它们编译到一个库中。

我应该采取哪些步骤?什么是命令行开关?

4

3 回答 3

1
  • 创建一个文件 stdafx.h,其中包含您要预编译的头文件。
  • 创建仅包含 stdafx.h 的文件 stdafx.cpp。
  • 确保 stdafx.pch 依赖于 stdafx.{h,cpp}
  • stdafx.cpp 应使用标志 /Yc 编译
  • 所有其他源文件都应该依赖于 stdafx.pch (以便首先创建后者)
  • 所有其他源文件都应该有标志'/FI stdafx.h /Yu'('就像在文件顶部添加了#include "stdafx.h",并使用PCH文件')。
于 2009-10-16T12:41:37.610 回答
0

预编译头文件是通过创建一个包含要预编译的头文件的 .cpp 来完成的。通常,stdafx.cpp 用于此目的。

  1. 创建一个包含要预编译的头文件的 .cpp —— 通常这个文件会被称为 stdafx.cpp
  2. 将 .cpp 添加到您的项目中
  3. 在任何其他 .cpp 文件之前使用 /Yc 编译该文件 /Fp 使用预编译信息设置 .pch 文件的名称
  4. 使用 /Yu 和 /Fp 编译所有其他文件,并使用来自 #3 的 .pch 的名称

还有其他方法,但我发现这是最简单的。

于 2009-10-15T13:56:18.900 回答
0

由于您使用的是 Visual Studio,我建议您只构建解决方案:

devenv solutionfile.sln /build [ solutionconfig ] [ /project projectnameorfile [ /projectconfig name ] ]

如果您确实需要执行每个单独的文件,您可以查看项目中每个文件的构建属性设置底部的命令行选项。它将显示您需要的所有开关。

关于 PCH,您需要做的就是确保首先编译创建 pch 的 cpp。

于 2009-10-15T14:41:02.210 回答