views:

763

answers:

18

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.

Please be aware that if you duplicate answers you may be downvoted - add additional information about a given build in the comments. Ideally these comments will be incorporated into the answer over time.

+4  A: 

GNU Make

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

Tom Ritter
Is there a windows native version, or does it require cygwin or similar?
Adam Davis
No, there are both windows and MSDOS versions. Also, it supports parallel building, but there are gotchas with multi-level directory builds.
Adam Davis
+4  A: 

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
This was the de facto standard java build tool for many years. (now many projects are moving to Maven)
Ken Liu
Similar cons as Maven: Very java-centric and XML configuration driven
toolbear74
+7  A: 

NAnt

http://nant.sourceforge.net/

Similar to Ant, a build tool for .Net

Tom Ritter
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
You could use UppercuT http://uppercut.pbwiki.com to get started with NAnt.
ferventcoder
+2  A: 

MSBuild

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

Alex
+11  A: 

SCons

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

jblocksom
Wow, this one is impressive! Auto dependency analysis, intelligent parallel builds across multiple directories, output caching (like ccache), cross platform...
Adam Davis
+4  A: 

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/JEE 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
Ken Liu
Great work on the pro/con Ken, I wish I could vote you up more than once!
Adam Davis
@Adam Davis - Thanks!
Ken Liu
+6  A: 

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
+2  A: 

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
This is no build-tool like make, it's a continuous-integration-system.
Mnementh
+4  A: 

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
+5  A: 

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
+1  A: 

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
+5  A: 

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  A: 

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
+3  A: 

Team City

Pros

Cons

  • Can be memory intensive
Conrad
+2  A: 

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
+2  A: 

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
+1  A: 

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
can you compile Silverlight 3 applications with this tool?
Richard B
+1  A: 

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