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

发布于 2024-08-07 16:21:14 字数 159 浏览 4 评论 0原文

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

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

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

Say I have a single project, with files A.cpp, B.cpp, C.ppp and matching header files (and that's it). The C++ files include system headers or headers from other modules.

I want to compile them to a library with command line actions (e.g., using Make), using 'cl', with the precompiled headers feature.

What are the steps I should do? What are the command line switches?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

国产ˉ祖宗 2024-08-14 16:21:14
  • 创建一个文件 stdafx.h,其中包含要预编译的标头。
  • 创建仅包含 stdafx.h 的文件 stdafx.cpp。
  • 确保 stdafx.pch 依赖于 stdafx.{h,cpp}
  • stdafx.cpp 应使用标志 /Yc 进行编译
  • 所有其他源文件应依赖于 stdafx.pch (以便首先创建后者)
  • 所有其他源文件应有标志'/FI stdafx.h /Yu'('就像在文件顶部添加#include“stdafx.h”一样,并使用PCH文件')。
  • Create a file stdafx.h, that includes the headers you want to pre-compile.
  • Create a file stdafx.cpp that only includes stdafx.h.
  • Make sure stdafx.pch depends on stdafx.{h,cpp}
  • stdafx.cpp should be compiled with flag /Yc
  • All the other source files should depend on stdafx.pch (so that the latter is created first)
  • All the other source files should have flags '/FI stdafx.h /Yu' ('do as if #include "stdafx.h" was added at the top of the file, and use the PCH file').
幻梦 2024-08-14 16:21:14

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

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

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

Precompiled Headers are done by creating a .cpp that includes the headers you want to be pre-compiled. Normally, stdafx.cpp is used for this purpose.

  1. Create a .cpp that includes the headers you want to be precompiled -- normally this file would be called stdafx.cpp
  2. Add the .cpp to your project
  3. Compile that file with /Yc before any other .cpp files /Fp sets the name of the .pch file with the pre-compiled information
  4. Compile all other files with /Yu and /Fp with the name of the .pch from #3

There are other ways, but I find this to be the simplest.

め七分饶幸 2024-08-14 16:21:14

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

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

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

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

Since you are using visual studio I would recommend just building the solution:

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

If you really need to do each of the individual files you can look at the command line option at the bottom of the build properties settings for each file in your project. It will show all the switches that you need.

Regarding the PCH, all you need to do is make sure the cpp that is creating the pch is compiled first.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文