VS2008 win32项目默认值 - 删除默认的预编译头文件

Mik*_*der 4 c++ precompiled-headers visual-studio-2008

我已经通过各种方法试图找到一种方法让IDE让我创建一个没有预编译头文件的新win32pject.我已经阅读了这个论坛上的每个主题,其中包含"precpmpiled headers"字样,我得到的最接近的是:

预编译标题

使用2008专业版(不表达,虽然行为似乎相似)我去:

文件 - >新建 - >项目

这将打开New Project对话框,在其中我选择Visual C++ Win32 Project,输入名称并单击OK.

然后我得到了"Win32应用程序向导".将"应用程序类型"设置为"Windows应用程序"后,应用程序设置窗格将不允许我取消选中预编译的标头.复选框显示为灰色.如果我选择"控制台应用程序",我可以取消选中它,但我正在创建一个GUI应用程序.

当我单击完成时,我在xxx.cpp中获得了6码的代码,四个头文件和强制性的stdafx.cpp.

也许我可以删除和删除所有这些东西,然后进入属性并关闭PCH,但这对于我想写的许多小项目示例来说都是一个麻烦.

我只想要一个将编译为win32应用程序的空项目,那么如何将PCH默认值更改为NONE?

dem*_*key 8

您可以创建自己的模板,也可以编辑默认模板.相关向导可在此处找到:

C:\Program Files\Microsoft Visual Studio 9.0\VC\VCWizards\AppWiz\Generic\Application
Run Code Online (Sandbox Code Playgroud)

显然,如果您要编辑默认模板,请先备份文件夹.

我将向您展示如何开始编辑它.

首先,您需要告诉向导脚本您不需要预编译头文件.在您喜欢的文本编辑器中编辑此文件:

\scripts\1033\default.js
Run Code Online (Sandbox Code Playgroud)

找到这一行:

var Pch = wizard.FindSymbol("PRE_COMPILED_HEADER");
Run Code Online (Sandbox Code Playgroud)

并注释掉它下面的一些行,如下所示:

//  if ((strAppType == "LIB" || ((strAppType == "CONSOLE") && 
//      !wizard.FindSymbol("SUPPORT_MFC") && !wizard.FindSymbol("SUPPORT_ATL"))) && !Pch) 
    {
        AddFilesToProjectWithInfFile(selProj, strProjectName);
        SetNoPchSettings(selProj);
    }
//  else
//  {
//      AddFilesToProjectWithInfFile(selProj, strProjectName);
//      SetCommonPchSettings(selProj);  
//  }
Run Code Online (Sandbox Code Playgroud)

现在打开这个文件:

\templates\1033\Templates.inf
Run Code Online (Sandbox Code Playgroud)

并找到第一次出现[!else]并删除它下面的这3行:

stdafx.h
targetver.h
stdafx.cpp
Run Code Online (Sandbox Code Playgroud)

这将为您提供一个没有stdafx.cpp/.h或targetver.h的项目,CPP文件将不会尝试使用PCH.但是它不会构建,因为我们没有在适当的头文件中添加任何#includes.我会留下让你弄明白:)
(你可以编辑通过修改文件自动生成的文件\templates\1033)