gpt4 book ai didi

c++ - 如何避免重新编译头文件

转载 作者:行者123 更新时间:2023-11-30 01:13:19 32 4
gpt4 key购买 nike

我的单个 C++ 文件包含来自各种库(如 MKL 和模板库)的许多头文件。由于包含许多 include 语句,每次编译这个单个文件都需要很长时间。我尝试将 include 语句分离在一个文件中,从中创建一个目标文件,并在主文件的编译过程中链接它,但编译器似乎无法识别在中定义的对象和函数的定义头文件。那么,如何才能节省这些头文件的编译时间呢?

最佳答案

预编译 header :

您正在做的事情听起来确实会从预编译头文件 (pch) 中受益匪浅。英特尔编译器确实支持 pch,如您在此处所见:

https://software.intel.com/en-us/node/522754 .

在没有root权限的情况下安装工具

您仍然可以尝试使用 ccache 看看它是否对您的情况有帮助——在不需要重新编译单元的情况下它可以产生巨大的不同,这种情况经常发生。这样做的途径是在本地安装 ccache。通常,这可以通过将源代码下载到您具有写入权限的目录(我在我的主目录中保留一个安装文件夹),然后按照该项目的构建说明来完成。构建可执行文件后,您必须将可执行文件的路径添加到您的路径中——通过执行

export PATH=$PATH:the-path-to-your-compiled-executables.

在 BASH 中。届时 ccache 将可供您的用户使用。

这里有更好的解释:https://unix.stackexchange.com/questions/42567/how-to-install-program-locally-without-sudo-privileges

CMAKE、cotire 等

最后一点——我没有阅读有关英特尔编译器的 pch 支持的文档,但 pch 支持通常涉及一些手动代码操作以指示编译预编译哪个 header 等。我建议查看使用 CMAKE 管理您的构建,并使用 cotire 插件来试验 pch。

虽然我从软件工程的角度对 CMAKE 有所提示,但它确实使您的构建管理,尤其是尝试各种加速构建的方法变得容易得多。在尝试了 pch 和 ccache 之后,您还可以尝试使用 ninja 而不是 make,看看这是否会给您带来任何改进。

祝你好运。

关于c++ - 如何避免重新编译头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32484035/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com