通过编译库加快编译速度

时间:2016-03-11 12:12:54

标签: c++ compilation libraries

我编写了一个程序导入并使用了来自boost库的许多标题。之后编译时间从1-2秒增加到30秒+。由于我总是导入相同的库,我想知道是否有一种方法可以一次性编译它们以加速以下编译。

我对共享/静态库非常不熟悉,无法找到回答我问题的教程。

我不介意有更大的可执行文件,以防这是要支付的价格。

1 个答案:

答案 0 :(得分:1)

如果您在某个程序的标题中包含了提升标题,并且所有/您的许多程序的.cpp文件都包含该标题,那么提升标题最终会包含在您的所有标题中。 cpp文件,并为每一个编译一次。

为避免这种情况,您可以尝试在项目中的(一个)或几个.cpp文件中仅包含boost标头。

您还可以使用PIMPL惯用法,也称为"编译防火墙"。我们的想法是你只在程序使用的标题中公开一个接口,如果实现需要提升,那么它只会出现在.cpp文件中,所以你不会在任何地方都包括提升。

请注意,仅限标题的库与“共享”和“静态”实际上并不相关。使用共享/静态库,您可以获得某种类型的目标代码,这些代码是通过预先编译库获得的。对于仅包含头的库,您导入的只是代码中的模板定义,编译器会使用它们。它在精神上比静态更接近于共享链接,但它也不是真的。