Cat*_*kul 24 c++ linux gcc precompiled-headers
预编译的标题似乎可以在大型项目中节省大量时间,但似乎也是一个有点陷阱的痛苦.
使用预编译头文件的优点和缺点是什么,特别是因为它适用于在Gnu/gcc/Linux环境中使用它们?
Nor*_*sey 10
预编译头的唯一潜在好处是,如果构建太慢,预编译头可能会加快它们的速度.潜在的缺点:
更多Makefile依赖项以获得正确; 如果他们错了,你就快速建立错误的东西.不好.
原则上,并非每个头都可以预编译.(考虑在#include之前放一些#define.)那么gcc实际上哪些情况正确?你想要相信这个前沿功能多少钱?
如果您的构建足够快,则没有理由使用预编译头.如果您的构建太慢,我会考虑
我无法与GNU/gcc/linux交谈,但我已经在vs2005中处理了预编译的头文件:
优点:
缺点:
该ccache的缓存前端到GCC,G ++,gfortran,......我的伟大工程.正如其网站所说
ccache是一个编译器缓存.它充当C/C++编译器的缓存预处理器,使用-E编译器开关和哈希来检测何时可以从缓存中满足编译.这通常会导致常见编译速度提高5到10倍.
在Debian/Ubuntu的,只是做" apt-get install ccache"和创造,比如说软链接,/usr/local/bin其名称gcc,g++,gfortran,c++,...这点/usr/bin/ccache.
[ 编辑 ]为了使这一点更明确以回应一些早期的评论:这通过缓存更大的编译步骤块来提供基本上预编译的头和源.因此它使用类似于预编译头的想法,并进一步进行.加速可能是戏剧性的 - 如网站所说,是5到10倍.
对于普通 C,我会避免使用预编译头。正如您所说,它们可能会导致问题,并且与常规编译相比,预处理时间非常短。
对于 C++,预编译头文件可能会节省大量时间,因为 C++ 头文件通常包含大型模板代码,其编译成本很高。我没有使用它们的实际经验,因此我建议您衡量一下在项目中节省了多少编译时间。为此,使用预编译头编译整个项目一次,然后删除单个目标文件,并测量重新编译该文件需要多长时间。
| 归档时间: |
|
| 查看次数: |
6240 次 |
| 最近记录: |