【发布时间】:2010-11-14 13:02:53
【问题描述】:
我有一个基于 Visual Studio C++ 的程序,它使用预编译的头文件 (stdafx.h)。现在我们正在使用 gcc 4.x 将应用程序移植到 Linux。
问题是如何在两种环境中处理预编译的头文件。 我用谷歌搜索但无法得出结论。
显然我想将 stdafx.h 留在 Visual Studio 中,因为代码库非常大,并且预编译的标头会缩短编译时间。
但问题是在 Linux 中要做什么。这是我发现的:
- 保持
stdafx.h不变。 gcc 编译代码的速度比 VC++ 快得多(或者它只是我的 Linux 机器更强大...... :)),所以我可能对这个选项感到满意。 -
使用来自here 的方法 - 使
stdafx.h看起来像(设置USE_PRECOMPILED_HEADER仅用于VS):#ifdef USE_PRECOMPILED_HEADER ... my stuff #endif 使用here 中的方法 - 使用
/FI编译VC++ 以隐式 在每个cpp 文件中包含stdafx.h。因此,在 VS 中,您的代码可以轻松切换以在没有预编译头文件的情况下进行编译,并且无需更改任何代码。
我个人不喜欢依赖,stdafx.h的混乱正在推动一个大的代码库。因此,该选项对我很有吸引力 - 在 Linux 上,您没有stdafx.h,但仍然只能通过/FI打开 VS 上的预编译头文件。- 在 Linux 上,仅将
stdafx.h编译为预编译头文件(模仿 Visual Studio)
你的意见?是否有其他方法可以解决此问题?
【问题讨论】:
标签: c++ visual-studio gcc cross-platform stdafx.h