我最近将我的 c++ 项目中的一些非常大的文件拆分为许多较小的文件(基本上每个类一个文件)。这使编译时间增加了一倍多,并将生成的可执行文件从 1.6mb 扩大到 2.4mb。为什么这会产生如此巨大的差异?
这是必须在大量文件中包含一些标题而不是仅仅几个的直接结果吗?
编译器选项:
g++ -Wall -Wextra -g -ggdb -std=c++0x
我指的可执行文件大小是在运行 strip -s 可执行文件之后。
尺寸:
使用调试符号之前:16MB
使用调试符号后:26MB
没有调试符号之前:1.5MB
没有调试符号后:2.4MB
附加问题:
我已经通过将头文件放在 pch.hpp 中,然后在我的 g++ 标志中使用 -include pch.hpp 选项来使用预编译头文件。这是使用 gcc 执行此操作的最佳方法吗?它似乎对编译时间的影响非常小。目前唯一没有被预编译的头文件是项目的一部分,并且随着项目的大量开发而可能发生变化。