views:

554

answers:

10

What are some alternatives to make for linux/freebsd?

+4  A: 

Automake :p which is commonly used in most linux app distributions but it gives a bit more work than a Makefile but better results http://www.gnu.org/software/automake/

http://www.openismus.com/documents/linux/automake/automake.shtml <-- nice explanation on how to use automake and autoconf

fmsf
+5  A: 

cmake and imake are both build utilities, although Imake is no longer maintained. Cmake is also cross-platform and can be used on Windows as well.

If you're into java, ANT is a build tool geared to Java (which doesn't really play nicely with Make).

Troll tech make a tool called qmake, which they use to build QT. It works by generating makefiles - Troll needed a tool to support a cross-platform build - so you still need another make utility.

ConcernedOfTunbridgeWells
Trolltech has moved out of qmake and into cmake, so I would go for the later instead of the former. CMake generates makefiles as much as IDE projects for a variety of IDEs.
David Rodríguez - dribeas
@dribeas has it correct, QT and I believe the entire KDE project was moved over to CMake.
Redbeard 0x0A
I'm not sure why you mention cmake and imake in the same sentence...
JesperE
+4  A: 

If you're looking for something completely different, there's Ant. I'm not that interested in it myself, but it does offer some portability advantages (no reliance on the unix shell, etc.)

mmagin
+2  A: 

OMake is a build tool for C/C++, OCaml, and LaTeX with automatic dependency analysis. It easily can build projects over multiple directories, and it finds changes based on MD5 sum rather than timestamp. It also has a mode where it can be run in the background, building your project whenever a file is modified. Generally, it takes less code to build common kinds of projects (C/C++ or OCaml programs and libraries) than make does. I haven't tried it for bigger projects.

Note that if you want to program in OCaml, this tool is really useful since the OCaml linker requires compiled modules to appear on the command line in dependency order, and figuring out this order every time something changes is non-trivial.

Jay Conrod
+2  A: 

I've heard good things about Jam.

diciu
The link is to Freetype Jam which came from Perforce Jam. Also derived from Perforce Jam is Boost Jam which is worth a look. I've been using Jam for over 10 years; I recommend it too.
janm
+2  A: 

My first question would be, what is the audience. Is this for building in-house software that only your team will build? If so, explore some of the options already presented. If this is something that others will be building, either stick with make, or use a tool that creates makefile and ship those. We use autoconf and automake for Linux and other unix platforms. In my opinion, you need a very good reason to do something other than configure; make; make install. Boost has their own tool (a modified version of Jam), and it annoys me everytime I need to try and get it to compile on an unusual machine.

KeithB
+7  A: 

I like SCons. It is constructed in such a way that every build script (a SConstruct file) is also a syntactically valid Python program. So, you can build arbitrary Python logic into your build script if you need to.

It's also much faster than make and calculates many kinds of dependencies automatically.

Greg Hewgill
Don't forget CMake
Redbeard 0x0A
'scuse me? Faster than make? What ancient hardware are you running make on? Last time I looked, SCons has serious performance issues. Other than that, I like SCons.
JesperE
+2  A: 

Rake - "a simple ruby build program with capabilities similar to make".

Luke Girvin
+2  A: 

The project I'm working on inherited some code that uses Cons instead of Make (not to confused with SCons in Greg Hegwill's answer).

Cons is written in Perl, much like SCons is written in Python. It manages dependencies automatically, and you can use any Perl code inside the build script to handle complex build sequences.

The main disadvantage (and the main reason I'm sorry my project uses it) is that Cons doesn't do parallel builds in the style of make -j. If you're compiling a number of files that don't depend on each other Cons will compile them one at a time, while make -j will compile them in parallel, which is great if you have multiple cores and threads on your machine.

Nathan Fellman
And unfortunately Cons seems to be a dead project; there is no current development on it last time I looked.
JesperE
+1  A: 

I've used CMake for more of my projects, including porting some autotools based ones and I can say that it does its job very well. It's mostly suitable for C/C++ cross platform projects.

Unknown