At Positive Networks, where I work, we have a complicated set of products to build. We keep hiring new people, and training people on our build system is a pain. When I tell new developers that.. yeah.. we’re using.. Visual Studio 6 – they all respond with the same look of surprise, followed by the obligatory “Will that work OK alongside my real compiler?”. Throw in the fact that we support a bunch of drivers for both WinNT+ and Win98+, and that much of our code builds on both Linux and Windows (with Mac support coming), and you have a mess.
I’ve long since switched to using BUILD.EXE, from the DDK, for my own personal projects. It took a little hunting around in the DDK samples and a pretty detailed reading of
the BUILD.EXE documentation, but I’ve managed to figure out how to get all of my little side projects building easily.
The benefits to moving to the DDK for building are significant (particularly compared to what we’re using!):
- New compiler! ISO C++! Yeah!
- New headers! The new compiler actually supports newer versions of various SDKs and libraries that we use
- Support for all of the best current practices – /GS for example (more on this later)
- Cool tools that come with the DDK
- Simple, well-defined upgrade path – never worry about converting DSP files again
- Great multi-architecture, multi-OS support (as long as the OS has “Windows” in the name)
- Multi-processor support
- More that I’m not thinking of at the moment…
So, it looks good on paper, but will it work? Well, I decided to take one of our static libraries as an example and get it building with the DDK. And so began the struggle. . .