All those files in a Visual C++ project

Tell us people what are they?
.mak and .obj OK obvious enough but what about
.ncb - and there are more! What the flipping heck are all these things?

I’m a stranger to Visual C++***** but I’ve used C# .net and it seems to get by with far fewer config files, and in Unix all we have is a make file, what gives?

*****and intend to remain so but I have to compile some C programs for Windows occasionally.

.dsp is the project settings - has a list of all the source/header/resource files, the folders they’re organized into, and any settings attached to the project.

.dsw is workspace settings - list of all the projects in a workspace, and any dependence linkages between them and stuff.

.pch is pre-compiled header. You can speed up build time if instead of always linking with the header source code, you pre-compile the header and let the compiler build off of that.

The others I’ve seen but don’t know their exact purpose.

.idb -> Developer Intermediate File
.pch -> C PreCompiled Header
.plg -> Developer Studio Build Log
.dsp -> Developer Studio Project
.lis -> Compiler Listing File
.opt -> Developer Studio File Workspace Options
.dsw -> Visual Studio Workspace
.ncb -> no compile browser file (hold Intellisense information, I believe)

Go, microsoft.

If it’s an intermidiate file why is it not removed after compile/build is finished? Is there a “clean out this project except for the source files because you’re gobbling all my disk space” option? I think I know the answer to that one.

And lars please tell me you didn’t reel that list off from memory :slight_smile:

I don’t worry about it; I w’ve written several command-line windows utilities for various things at work and I just put the source code into the source control system.

My file headers look something like:

// [utility].cpp : Utility Description here
// Copyright 2001-2004 The Company, Inc.
//   My Name
// Instructions for maintenance:
//    Create a Microsoft VC++ 6.0 'Hello World'-type Win32 Console application named '[utility]'.  Replace the
//    pre-fab [utility].CPP file with this one; select REBUILD ALL to do up the precompiled headers.

So, I don’t care what all the other files are; I can easily re-create the project later if I follow my own instructions - and I don’t have to worry that I’m putting unnecessary files into the source control system, or that I’ll forget some file, or that some binary I checked in won’t work right on some other coder’s system, or the source system will check out built things read-only and it’ll break the VC++ compile/link, etc. etc.