c++ - 使用 boost 库的预编译 header 需要很长时间才能编译

标签 c++

我正在创建一个依赖大量 boost 库的软件,并且随着编译变得越来越慢(几分钟),我将所有反复使用的库打包到一个预编译头文件中(比如 20-ish boost库和 20 个标准库),希望它能解决问题。

今天,我意识到当我使用预编译头文件编译时,一个普通的 hello-world.cpp(甚至不包括该死的预编译头文件)需要 15 秒才能构建。预编译头300MB左右。

因此,问题是:

- 对于这种大小的预编译 header ,这种减速是预期的吗? (我偷偷希望我犯了某种可怕的错误,如果你们中的一个人能告诉我他经常使用 2GB 的预编译头并且一切顺利,我会很高兴)

- 如果这种减速是预料之中的,那么我根本不相信预编译 header 的有用性。我错过了什么吗?

编译器:

gcc version 4.4.5 (Debian 4.4.5-8)

命令行:

g++ -include common-header.hpp -Winvalid-pch -c vanilla-hello-world.cpp

最佳答案

packed all the libs used over and over in a precompiled header

这是你的问题,只包含你需要的。

每个 TU 仍然需要查阅这个庞大的预编译 header 。

关于c++ - 使用 boost 库的预编译 header 需要很长时间才能编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15163873/

相关文章:

c++ - 为什么这个派生类需要声明为友元?

c++ - 直接读取对象

c++ - 按钮 onClick 的工作原理

C++ 不命名类型

c++ - 构建 Qt 应用程序 Linux

Python 嵌入 IPython : WindowsError: [Error 193] %1 is not a valid Win32 application

c++ - 为什么这里需要const?

c++ - 在循环中用作 "const &"函数参数的临时对象的编译器优化?

c++ - 从正在运行的进程设置线程优先级

c++ - 如何访问( boost 元)状态机中的所有状态?