One of the most useful features in CodeWarrior for speeding up your build time is the compiler's support for precompiled headers. These are used by the default wizard-produced projects in V8 and V9, but a lot of developers don't understand them.
A precompiled header is a file that stores the compiler's internal state after a set of files has been read. This state includes all the prototypes, declarations, and defines that the compiler has seen. Usually, a precompiled header is generated by a special "pch" header file that #includes a lot of header files that you always use, then uses a #pragma precompiled_header command to dump the current state.
When a precompiled header is included, it reads in all that information very quickly, much quicker than having the compiler go off and reread all of the header files. So, if all of your source files can be compiled using a common set of header files, using a precompiled header to only read those once can save a lot of time.
I wrote more about this topic three years ago on the palmoswerks site, so I'll expand on those remarks here and include some corrections and changes.
CW V9's precompiled header usage is very similar to V8. The standard precompiled headers are still built using the "BuildHeaders.mcp" project, but now it's located in the "CW for Palm OS Support\Precompiled Headers" folder. With the Palm OS 5.0 R3 SDK release, PalmSource removed the PalmOS.win.pch file from their SDK, so the CW V9.3 update added that file to this folder. This can cause some projects to fail to build, as they don't have this path in their access paths; this set of failing projects includes the ones in the CW distribution that build the MSL libraries. To fix this, you can either copy the final PalmOS_Headers to the "Palm OS Support/Incs" folder, or you can modify those projects to include a recursive access path to "CW for Palm OS Support".
