10

There's a lot of questions on here regarding various niche build needs (.NET, continuous integration, etc) but, of course, my niche need is different.

Rather than asking a very specific question right now, I'd like a survey of available build tools (such as make, ant, etc) so I can ask a follow up question more intelligently if needed.

In your answer, please include:

  • ONE build tool
  • Link to the main page about that tool
  • If you know some pros and cons (ie, runs on windows with cygwin, or .NET specific, etc) then list some (not required - the name and link are required)

If your build tool is already in an answer, comment on it adding pros/cons/limitations/experiences. Feel free to add as many answers as you like as long as they don't already exist - but don't put several build tools into one answer.

halfer
  • 19,824
  • 17
  • 99
  • 186
Adam Davis
  • 91,931
  • 60
  • 264
  • 330
  • I'm going to wait a few days before choosing the 'answer' and it will simply be the one which has the clearest complete list of pros/cons to encourage good answer editing. I'm not looking for length, just a very quick way to evaluate each one before doing in depth research on the most promising. – Adam Davis Oct 29 '08 at 16:26

18 Answers18

11

SCons

Build scripts are Python scripts. Supposed to work on Linux, Windows, Mac OS X.

jblocksom
  • 14,127
  • 5
  • 34
  • 30
  • 1
    Wow, this one is impressive! Auto dependency analysis, intelligent parallel builds across multiple directories, output caching (like ccache), cross platform... – Adam Davis Oct 29 '08 at 16:15
7

NAnt

http://nant.sourceforge.net/

Similar to Ant, a build tool for .Net

Tom Ritter
  • 99,986
  • 30
  • 138
  • 174
  • Pros - Mature - Better API than MSBuild (in my opinion) - Ubiquity in .NET - Easy to find samples online - Tasks for MSBuild (useful for invoking .sln files directly) cons - XML (XML is a poor choice for imperative syntax) – Ben Scheirman Oct 29 '08 at 17:13
  • You could use UppercuT http://uppercut.pbwiki.com to get started with NAnt. – ferventcoder May 16 '09 at 18:52
6

Rake

Ruby version of make

Pros:

  • Clean idiomatic ruby syntax
  • Rake files are written in ruby, so leverages ruby itself rather than proprietary file format or XML
  • Ruby on Rails tightly integrated with it

Cons:

  • Requires ruby, which is not always available
  • No built-in packaging support/versioning/dependency management (see rubygems)
Ken Liu
  • 22,503
  • 19
  • 75
  • 98
5

premake

Build script generator. Uses Lua to describe the build. It can generate Makefile or project files for Visual Studio, Code::Blocks, CodeLite, SharpDevelop, MonoDevelop, etc. Built-in support for C, C++, C#, including things like resources and ASP.NET. Mono support.

sanxiyn
  • 3,648
  • 1
  • 19
  • 15
5

Jam family.

BJam is based on FTJam, which in turn is based on Jam. Small, fast, portable. Automatic dependency analysis for C, C++. It is not a generator -- it does not generate any Makefile or other build files for secondary build systems.

sanxiyn
  • 3,648
  • 1
  • 19
  • 15
4

GNU Make

http://www.gnu.org/software/make/

Tom Ritter
  • 99,986
  • 30
  • 138
  • 174
4

Apache Ant

Pro:

  • many task/plugins
  • runs on many platforms
  • very mature
  • is supported by many IDEs, Continuous-Integration-Tools etc.

Con:

  • requires Java
Mnementh
  • 50,487
  • 48
  • 148
  • 202
  • This was the de facto standard java build tool for many years. (now many projects are moving to Maven) – Ken Liu Oct 29 '08 at 16:48
  • Similar cons as Maven: Very java-centric and XML configuration driven –  May 28 '10 at 16:27
4

Apache Maven

Pros:

  • Automatic dependency management
  • Utilizes convention over configuration (enforces consistent project directory structures)
  • Projects that use maven can be built in minutes
  • Excellent support for standard java/Java EE project builds
  • Works well in a team environment (supports "team" configurations)
  • Built in release/versioning concepts
  • Integrates with popular Java IDEs
  • Growing support in java OSS community

Cons:

  • Steep learning curve (esp. compared to Ant)
  • Poor online documentation (the new book is excellent though)
  • Sometimes surprising behavior
  • Very java-centric
  • XML configuration driven
Arjan Tijms
  • 37,782
  • 12
  • 108
  • 140
Ken Liu
  • 22,503
  • 19
  • 75
  • 98
4

CMake

Cross-platform build system generator. It can generate Makefile or project files for Visual Studio, Eclipse CDT, KDevelop, Code::Blocks, etc. Automatic dependency analysis for C, C++, Fortran, Java.

sanxiyn
  • 3,648
  • 1
  • 19
  • 15
3

FinalBuilder

Pros

  • Visual and GUI-oriented unlike ant or make
  • Lots of built-in actions
  • Script builder for your own actions
  • Integrates easily with cc.net

Cons

  • Only runs on Windows
  • Not free, but you get good value for your money

They also have a tool called Automise that does more system-oriented tasks.

Keith G
  • 4,580
  • 5
  • 38
  • 48
3

Team City

Pros

Cons

  • Can be memory intensive
Rad
  • 8,336
  • 4
  • 46
  • 45
2

MSBuild

http://msdn.microsoft.com/en-us/library/wea2sca5(VS.80).aspx

Adam Davis
  • 91,931
  • 60
  • 264
  • 330
Alex
  • 12,749
  • 3
  • 31
  • 45
2

CruiseControl/CruiseControl .Net

http://cruisecontrol.sourceforge.net/

Pros

  • Can use various build and TDD tools depending on version chosen
  • Automate when builds happen and what kind - full release build or changed code build
  • Can automatically run tests (nUnit, jUnit, Fitnesse, etc.) on a build to ensure that all tests still pass when new code is checked into the project.
  • Integrates with source control
  • Error reporting and notification when builds fail

Cons

  • Error reporting isn't always in a nice pretty to read format
  • Set up of projects should be well thought out and all projects monitored should use certain patterns to make integration setup more efficient.
silverbugg
  • 214
  • 2
  • 7
2

PSake (pronounced "Sake")

Pros -

  • Powershell

Cons -

  • Powershell :)

This project is fairly new, looks interesting, and would be very powerful, since it's ".NET at the command line". Unfortunately, I don't know very many people who take the time to learn Powershell.

Ben Scheirman
  • 40,531
  • 21
  • 102
  • 137
2

cons

Pros:

  • Uses Perl, if you like that sort of thing
  • Haven't used it otherwise :-)

Cons:

  • Hard to Google for!
  • Not actively developed?
Will Robertson
  • 62,540
  • 32
  • 99
  • 117
2

UppercuT -

Some good explanations here: UppercuT

Pros -

  • Super easy to get started - Automated Builds as easy as (1) solution name, (2) source control path, (3) company name for most projects!!!
  • Limited knowledge of NAnt necessary.

Cons -

  • Only available for .NET
ferventcoder
  • 11,952
  • 3
  • 57
  • 90
1

NUBuild (pronounced "New-Build")

This is the latest and pretty advanced .Net build tool (a very intelligent one) called NUBuild that allows you to build VB.Net and C# projects. Its extremely lightweight, open source and at the same time easy to setup and provides almost no-touch maintenance.

  • Easy to use command line interface
  • Ability to target all .Net framework version i.e. 1.1, 2.0, 3.0 and 3.5
  • Supports XML based configuration
  • Supports both project and file references
  • Automatically generates the “complete ordered build list” for a given project
  • Ability to detect and display circular dependencies Perform parallel build
  • Ability to handle proxy assemblies
  • Easily integrated with Cruise-Control.Net continuous integration system
  • Version management capability
  • Notification feature

http://nubuild.codeplex.com/

It's best the build tool we have seen so far!

netbuild
  • 131
  • 1
  • 1
1

Bakefile

Bakefile is cross-platform, cross-compiler native makefiles generator. It takes compiler-independent description (XML) of build tasks as input and generates native makefile (autoconf's Makefile.in, Visual C++ project, bcc makefile etc.).

Bakefile's task is to generate native makefiles, so that people can keep using their favorite tools. There are other cross-platform make solutions, but they either aren't native and require the user to use unfamiliar tools (Boost.Build) or they are too limited (qmake).

Nick
  • 27,566
  • 12
  • 60
  • 72