Dav*_*vid 23 c++builder precompiled-headers c++builder-xe4
我目前正在将一个大型RAD Studio 2010项目迁移到XE4.作为其中的一部分,我正在重新创建许多项目文件.我想借此机会确保我们使用最佳的预编译头文件机制,因为似乎有几种方法可以做到这一点.
现在我们只编译32位,但将来会使用64位编译器.
以下是我们目前在2010年所做的工作,以及为什么我不确定在XE4中要做什么:
我们有一个文件PchApp.h,其中包含<vcl.h>许多其他常用的头文件,主要是项目中各种常用核心类的头文件.此标头包含在每个CPP文件的顶部,后跟#pragma hdrstop如下所示:
// Top of .cpp file
#include "PchApp.h"
#pragma hdrstop
// Normal includes here
#include "other.h"
#include "other2.h"
// etc
Run Code Online (Sandbox Code Playgroud)
然后,我们在项目选项的预编译标题部分中进行以下设置:

编译起来并不是特别快(大约350,000行代码需要12分钟.)我不确定:
换句话说,我不确定这些是正确的还是最佳的设置,但是从阅读文档中我同样不确定什么会更好.我知道我不太了解所有选项 - 这个问题的一个原因:)
XE4 32位编译器的选项对话框是相同的,但有两件事让我感到困惑和/或让我不确定当前的2010方法是最好的.
1.默认行为
在创建新的VCL Forms项目时,IDE会创建一个默认名为Project1PCH1.h的标头,该标头旨在作为项目的预编译标头. 此标头包含<vcl.h>和<tchar.h>,并在项目管理器中显示为节点.它不包含在默认的Form1.cpp中,但#include <vcl.h>后面#pragma hdrstop是Form1.cpp的最顶层,后跟其他标题.
使用此标题的新项目的默认XE4设置对话框是:

我(天真地?)正在假设默认值实际上是最佳/最佳设置.有些事情困扰我:
Project1PCH1.h在任何地方的预编译头设置中都没有提到项目的假定预编译头.Project1PCH1.h?)Project1PCH1.h.事实上,我不知道编译器或IDE实际上是如何知道它应该使用它Project1PCH1.h或者它应该使用它的.cpp文件,因为它没有以我能找到的任何方式引用.
这对我来说是最令人费解的事情,并且提出了这个问题,并清除了我对PCHes的困惑.我曾计划复制/使用IDE的默认设置,但在我明白他们在做什么之前我不想这样做.
2. PCH向导
自2010年以来,IDE已包含预编译头向导.我还没有能够让它工作 - 我现在再次运行它来获得它的结果并解释我对"不工作"的记忆,但它似乎需要几个小时,所以我将更新这个问题后来.
编辑:它运行,虽然它需要几个小时,并产生一个列表(对我来说,知道源基地)奇数标头.我几年前尝试它的回忆是它根本没有运行 - 一个明显的改进.
由于它存在,因此可能是在为升级2010项目而形成的新创建的项目文件中设置使用预编译头的最佳方法.我该如何做到最好?包括PchApp.h在内的所有.cpp文件都会混淆吗?
以此为背景,我有以下问题:
我正在寻求一个清晰,详细,解释性和指导性的答案,一个清楚地解释最佳实践,设置选项,包含在.cpp文件,标题和/或项目文件中的项目等等 - 换句话说,某些东西现在清理我(毕竟以上!)相当困惑的理解.今后其他C++ Builder用户可以将其作为首选PCH参考的高质量答案将非常出色.我打算在我能够的几天内增加一笔赏金.
| 归档时间: |
|
| 查看次数: |
1451 次 |
| 最近记录: |