What are some alternatives to make for linux/freebsd?
-
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
-
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.
David RodrÃguez - dribeas : 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.Redbeard 0x0A : @dribeas has it correct, QT and I believe the entire KDE project was moved over to CMake.JesperE : I'm not sure why you mention cmake and imake in the same sentence... -
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.)
-
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.
-
I've heard good things about Jam.
janm : 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. -
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.
-
I like SCons. It is constructed in such a way that every build script (a
SConstructfile) 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
makeand calculates many kinds of dependencies automatically.Redbeard 0x0A : Don't forget CMakeJesperE : '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. -
Rake - "a simple ruby build program with capabilities similar to make".
-
The project I'm working on inherited some code that uses
Consinstead ofMake(not to confused withSConsin Greg Hegwill's answer).Consis written in Perl, much likeSConsis 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
Consdoesn't do parallel builds in the style ofmake -j. If you're compiling a number of files that don't depend on each otherConswill compile them one at a time, whilemake -jwill compile them in parallel, which is great if you have multiple cores and threads on your machine.JesperE : And unfortunately Cons seems to be a dead project; there is no current development on it last time I looked. -
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.
0 comments:
Post a Comment