Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

VS2008 win32 project defaults - remove default precompiled headers

I have been through every option to try to find a way to get the IDE to let me create a new win32pject without precompiled headers. I have read every thread on this forum with the words "precpmpiled headers" in it and the closest I got was:

Precompiled Headers

Using 2008 pro (not express, althought the behaviour seems to be similar) I go to:

File -> New -> Project

This opens the New Project dialog in which I select Visual C++ Win32 Project, enter a name and hit OK.

THen I get the "Win32 Application Wizard". With the Application Type set to "Windows Application", the application settings pane will not allow me to uncheck the pre-compiled headers. THe check box is greyed out. IF I choose "Console Application" I can uncheck it, but I am creating a GUI app.

WHen I click Finish I get 6 yards of code in xxx.cpp, four header files and the obligatory stdafx.cpp.

Perhaps I could remove and delete all this stuff and the go into the properties and turn off PCH, but thats a hasssel for the many small project examples I want to write.

I just want an empty project that will compile to a win32 app, so how do i change the PCH default to NONE?

like image 651
Mike Trader Avatar asked Dec 17 '22 05:12

Mike Trader


2 Answers

You could make your own template to do this, or you could edit the default one. The relevant wizard can be found here:

C:\Program Files\Microsoft Visual Studio 9.0\VC\VCWizards\AppWiz\Generic\Application

Obviously if you're gonna edit the default template, backup the folder first.

I'll show you how to get started on editing it.

First of all you need to tell the wizard script that you don't want precompiled headers. Edit this file in your favourite text editor:

\scripts\1033\default.js

Find this line:

var Pch = wizard.FindSymbol("PRE_COMPILED_HEADER");

and comment out some of the lines below it like this:

//  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);  
//  }

Now open this file:

\templates\1033\Templates.inf

and find the first occurrence of [!else] and delete these 3 lines below it:

stdafx.h
targetver.h
stdafx.cpp

This will give you a project without stdafx.cpp/.h or targetver.h, and the CPP file will not try to use a PCH. However it won't build because we haven't added any #includes to the appropriate header files. I'll leave that for you to figure out :)
(you can edit the files that get generated automatically by modifying the files in \templates\1033)

like image 143
demoncodemonkey Avatar answered Dec 19 '22 19:12

demoncodemonkey


either choose an empty project, or create your own wizard in which you use a template. Since you say you don't want to change properties the whole time, I'd also strongly suggest using property sheets (vsprops). This way, you create an empty project, add the property sheets you want, and you'r ready to go. No more fiddling with properties, and each project uses the same set.

like image 25
stijn Avatar answered Dec 19 '22 19:12

stijn