views:

315

answers:

6

I am currently setting up a new software project and I want to have an automated build system. The project has a fairly complex involving C, C#. It must also generate automatic bindings (Python, PHP, Java, Ruby, etc.) using an external tool (SWIG).

The project should be able to built, and run in Linux, Windows, and possibly Mac OS X.

I've looked into CMake, autotools, and waf. Anyone have any suggestions?

+5  A: 

I suggest that you look into Cruise Control and/or Cruise Control.NET for automation and continuous integration. Also look at NAnt and Ant for the actual build script capabilities. I use these every where I go and pretty much every day and I have yet to run into anything that I couldn't get done. On occasion I have had to make my own custom NAnt tasks...which I did in C#...and still no problems!

Andrew Siemer
CruiseControl and ant are written in java and therefore should support all your required platforms.
morechilli
+2  A: 

make is certainly capable of doing everything you are asking for there. I'd start with just that; it's your best bet for portability.

If you still find you have portability problems, then the autotools are often a reasonable solution. They are just enough of a pain to get setup that I prefer to avoid them unless I really feel I need them.

Chris Arguin
+4  A: 

Scons is a modern, easier approach to building. It's pretty customizable, so you can pretty much have it do whatever you want, but is still really easy to get setup.

asperous.us
+1 - we're just switching from make to Scons and finding it brilliant.
Vicky
Scons is missing active development, I would go for Waf instead (Python too).
bogdan
+1  A: 

TeamCity, less xml config compared to Cruise Control.

redsquare
+1  A: 

Others also use yam

but I'm very pleased with CMake. It's available for the mentioned platforms and provides a lot functionality to script the full automation of non-standard build procedures (on the supported platforms).

In my case it's the build of a number-crunching backend in C which uses Tcl and GSL libraries combined with a frontend in Tcl/Tk and the automated generation of standalone executables (starpack/tclkit) on Linux, MacOS and Win (MingW & Visual Studio).

A: 

I personally use CMake + mingw + Qt4 for all my cross platform needs, however I'm sure it is fairly easy to adopt CMake to swig/mono on linux and .net on windows.

OneOfOne