繁体   English   中英

如果C ++应用程序与繁重的模板库链接,那么在编译应用程序时,是否会重新编译库中的所有模板定义?

[英]If a C++ application is linked with a template-heavy library, does it re-compile all template definitions in library whenever application is compiled?

我有一个仅标头的C ++库,该库主要由带有标头文件中所有实现的模板组成。

现在,为了减少编译时间,我试图将其制作为.so(共享库)文件,并从应用程序进行外部链接。 每当编译应用程序时,它将始终重新编译吗?

使用g ++在Linux中有所作为吗?

是的,没有。


是:

每当重新编译使用模板的模板时,都需要重新编译它们。

没有:

这不是因为它们将位于共享库中。 他们不会。 它们仍将位于标题中。

除非他们不是。 如果可以显式实例化所需的所有内容,则可以像将其作为非模板对象一样,将它们烘焙到库中。 此页面上某处有大量有关此方面的信息。


如果要减少编译时间并增加模板的负载,通常是要查看的预编译标头

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM