在 Visual C++ 中使用预编译头文件最不显眼的方式是什么?

问题描述 投票:0回答:3

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

我想使用命令行操作(例如,使用 Make)、使用“cl”和预编译头功能将它们编译为库。

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

c++ visual-studio visual-c++ precompiled-headers
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 文件”)。

0
投票

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

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

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


0
投票

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

devenv解决方案文件.sln /build [解决方案配置] [/项目项目名称或文件[ /项目配置名称]]

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

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

© www.soinside.com 2019 - 2024. All rights reserved.