gpt4 book ai didi

c++ - 使用基于 boost 的库时,为什么我生成的预编译文件如此之大?

转载 作者:行者123 更新时间:2023-12-04 08:14:56 24 4
gpt4 key购买 nike

我正在使用通过 vcpkg 处理的库进行项目。
由于编译时间不是很长,我清理了一些头文件并将项目配置为使用预编译头文件,将 STL 和 vcpkg 头文件放入其中。
我开始遇到臭名昭著的C1076, C3859 and C1060 errors ,并快速检查生成的 pch 向我展示了一个巨大的 1.2GB 文件......
我使用/showIncludes 开关运行了一个构建,看起来 spirit-po ,我用于翻译的基于 Boost 的库,引用了 2600 多个 Boost header 。 (我的项目只有 70 个文件,没什么特别的)
它是项目中唯一使用的基于 Boost 的库。
为了确定这是罪魁祸首,我从 pch 中删除了除 Spirit-po 文件之外的所有内容:

#pragma warning(push)
#pragma warning(disable : 4267)
#include <spirit_po/spirit_po.hpp>
#pragma warning(pop)
结果生成的文件仍然是 1GB 大...
调试和发布版本之间的大小没有区别。
使用空的 pch 文件,生成的文件大约为 4MB。
假设一个 250MB 的文件被认为很大,我怎么会得到一个 4 倍大小的文件?
使用 pch 中的那个库,我不再有编译错误,但我不希望将来再次出现问题。
我正在使用 Microsoft Visual Studio Community 2019 版本 16.8.4。
我有哪些选择可以改善这种情况?
这可能是 Visual Studio 中的错误配置吗?
我是否必须完全放弃库才能删除 Boost 依赖项?
还有另一种选择吗?
谢谢你阅读我:)

最佳答案

  • 仅 header 库有效,因为这些 header 中没有遗漏任何细节。
  • 预编译头包含翻译单元开始前头的所有编译信息。
  • 很大一部分(大部分)boost 库只是头文件。雪上加霜的是,它们是高度通用的,这意味着将有许多模板及其实例化。

  • 1 + 2 + 3 是完美 Storm 。如果大小是一个问题,最好的办法是屏蔽来自标题的 boost 并将它们包含在主动依赖它们的选定翻译单元中。

    关于c++ - 使用基于 boost 的库时,为什么我生成的预编译文件如此之大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65750889/

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