在gcc中使用预编译头
我正在研究使用预编译头来减少编译时间 我已在此处阅读了有关该主题的文件,其中我阅读了以下内容:在gcc中使用预编译头,gcc,precompiled-headers,Gcc,Precompiled Headers,我正在研究使用预编译头来减少编译时间 我已在此处阅读了有关该主题的文件,其中我阅读了以下内容: #ifdef USE_PRECOMPILED_HEADERS #include "stdafx.h" #else #include "dep1.h" #include "dep2.h" #endif 在特定编译中只能使用一个预编译头 对于我想改进构建时间的项目,通常会有很长的包含列表。上面的内容让我想到,为了获得最大的性能改进,我必须创建一个公共include集合,将它们放入单个头文件中,编译并包
#ifdef USE_PRECOMPILED_HEADERS
#include "stdafx.h"
#else
#include "dep1.h"
#include "dep2.h"
#endif
在特定编译中只能使用一个预编译头
对于我想改进构建时间的项目,通常会有很长的包含列表。上面的内容让我想到,为了获得最大的性能改进,我必须创建一个公共include集合,将它们放入单个头文件中,编译并包含该头文件
另一方面,我更喜欢在特定的文件中明确列出我的依赖项,因此我倾向于首先包括预编译的头文件,然后是实际头文件的手动列表
我有两个与此相关的问题:
#ifdef USE_PRECOMPILED_HEADERS
#include "stdafx.h"
#else
#include "dep1.h"
#include "dep2.h"
#endif
我可以定期运行没有预编译头的构建,以检查是否列出了所有依赖项。不过这有点笨重。有谁有更好的解决方案吗- 任何不借助预编译头的编译都需要时间李>
- 您依靠命名约定或其他方式(文档?)在您的单个翻译单元中引用的内容与其声明之间建立信息链接
由于这些原因,我不太喜欢预编译头
stdafx.h
(尽管您可以随意命名!)iostream
、map
、vector
等)作为依赖项包含在代码文档中
通常这必须是一个否。因此,您必须只在
stdafx.h
中包含那些不受您控制的头文件(即,[1]标准语言包含[2]来自从属模块的包含(大部分是公开的接口头))。Rest all includes(其源代码位于当前项目/模块中)必须在需要时明确包含在每个头文件中,并且不得放入预编译的stdafx.h
的可能副本中;请参阅与GCC 4.9相关的内容。谢谢您的信息。我做了一次编辑,希望能澄清第二个问题。