【问题标题】:Huge compilation time when linking with library using boost::serialization使用 boost::serialization 与库链接时需要大量编译时间
【发布时间】:2012-02-27 14:05:07
【问题描述】:

您好,感谢您的阅读。

我有一个使用 boost::serialization 的动态库,其中包含大约 200 个不同的类。由于标头 messageExports.h,我在我的程序中使用了这个库,它看起来像这样:

#include "classe1.h"
//...
#include "classe200.h"

BOOST_CLASS_EXPORT(ns::classe1);
//...
BOOST_CLASS_EXPORT(ns::classe200);

但是包含messaeExports.h的文件需要很长时间才能编译,而且每次我修改它。当我使用 Qt 和 qmake 时,我尝试了 PRECOMPILED_HEADERS 方法,但它比没有花费更多的时间,而且似乎 qmake 将预编译的头文件添加到每个 obj 文件中。

您知道如何减少编译时间吗?是否可以重新排列 messageExport.h 标头以避免增强导出定义?

提前谢谢你,

罗兰

【问题讨论】:

  • 我们遇到了完全相同的问题。你找到解决办法了吗?

标签: c++ boost compilation qmake boost-serialization


【解决方案1】:

查看示例代码可能会有所帮助,但是...

您能否轻松地从“classe*.h”中删除常见的样板代码?

使用包含保护来防止同一文件的多个包含?

// File: ---classe1.h---
#ifndef __CLASSE1_H_INCLUDED
#define __CLASSE1_H_INCLUDED
// Stuff goes here
// Here
// Here (ad naseum)
#endif // __CLASSE1_H_INCLUDED
// End Of File: ---classe1.h---

只是一些建议......

【讨论】:

  • 不允许使用双下划线。
  • 我已经使用了包含守卫,并且我为所有 classx 文件设置了通用基类,以避免使用通用代码。谢谢
猜你喜欢
  • 2011-06-29
  • 1970-01-01
  • 2016-02-27
  • 1970-01-01
  • 2012-05-08
  • 1970-01-01
  • 2015-01-13
  • 2016-02-02
  • 2011-07-03
相关资源
最近更新 更多