C++ – Build solution for C++

buildbuild-automationbuild-processc

I'd like to setup a build server for unmanaged C++ code developed in Visual Studio 2005. The build server should be able to do the following:

  • Monitor a Subversion repository for code changes and schedule a build
  • Checkout code from Subversion and run unit tests
  • Provide some sort of report on build success and changes from previous build

I've initially been looking at using CruiseControl with Ant. Is there a better solution? Perhaps CruiseControl.Net, and NAnt?

Best Answer

NAnt takes quite a bit of work to build C++ effectively. It really is a .NET build system through and through. We're building our title to four C++ platforms plus a set of .NET tools, and it took a while to bend NAnt to our needs. For example, NAnt's C++ dependency analysis is so broken that we had to write our own. And it has a lot of perf issues that we had to go hack away at it to fix.

So don't jump in with both feet on this. Do some preliminary testing to make sure it really can do what you want and get a feel for how much you'll have to modify it for C++.

Also, we're using CruiseControl.NET also for some NUnit stuff we have built into one of our tools that drives the game we're developing. Very happy with this, it was brain-dead easy to set up. Big thumbs up here.

At a previous gig I used Final Builder in the exact scenario you describe - on the build server. Local builds were done using Visual Studio. It's a pretty awesome product that I'd seriously consider if you have a little money to spend. We had nothing but good results from it.

At my current company we went with NAnt because we didn't want to buy FB for every engineer on the team. We also didn't like how FB is closed source. So we're 100% Nant and are liking it. Just took some time to bang it into shape!