包括其他项目的stdafx.h

时间:2011-10-13 06:31:31

标签: c++ visual-studio-2008

在visual studio解决方案中,我有两个vcproj,一个叫kernellib.vcproj,另一个叫kernerlibtest.vcproj。你可以猜到,后者是前者的单元测试项目。

现在kernellib.vcproj使用预编译的标头,而所有缓慢的WINAPI includes都位于stdafx.h。这是为了确保kernelib可以快速编译。

现在,由于kernerlibtest.vcproj也使用了同一组包含,我还想对kernerlibtest.vcproj执行此速度技巧,如何配置我的vcproj和解决方案文件来执行此操作?< / p>

2 个答案:

答案 0 :(得分:0)

在此处启用:Project -> Properties -> Configuration Properties-> C/C++ -> PreCompiled Headers。将“不使用预编译标题”选项更改为“使用/ Yu”。 (这是它在vs2010中的表现,希望在vs2008中也应如此)

答案 1 :(得分:0)

有很多方法可以让它发挥作用。这是我的建议:

  • “stdafx.h”(或者你调用预编译的头文件)应该是每个模块的内部头文件。
  • 你应该只在stdafx.h中包含很少更改的标题,这些标题不会发生很大变化。
  • 您应该严格将此视为优化。
  • 仅包含来自.c / cpp文件的stdafx.h,而不包含任何公共标题。
  • 如果标头依赖于HWND等定义,您仍应在公共标头中包含stdlib / winapi标头。这不会减慢库的编译速度,因为您首先要包含预编译的头文件。
  • 在stdafx.h中,对于kernerlibtest,您甚至可以包含kernerlib.h(依赖项的公共头)。如果频繁修改kernerlib.h,你什么都得不到。
    • 如果您在工作树中嵌入一个大型第三方库,这将非常有用。