I've been using make and makefiles for many many years, and although the concept is sound, the implementation has something to be desired.
Has anyone found any good alternatives to make that don't overcomplicate the problem?
I've been using make and makefiles for many many years, and although the concept is sound, the implementation has something to be desired.
Has anyone found any good alternatives to make that don't overcomplicate the problem?
I recommend using Rake. It's the easiest tool I've found.
Other good tools I've used, though, if Ruby's not your thing, are:
doit is a python tool. It is based in the concepts of build-tools but more generic.
Be aware of the
ninja
build tool (v1.8.2 Sept 2017) which is influenced bytup
andredo
.The build file generator
cmake
(e.g. for Unix Makefiles, Visual Studio, XCode, Eclipse CDT, ...) can also generateninja
build files since version 2.8.8 (April 2012) and, afaik,ninja
is now even the default build tool used bycmake
.It is supposed to outperform the
make
tool (better dependency tracking and is also parallelized).cmake
is an already well-established tool. You can always choose later the build tool without modifying your configuration files. So if a better build is developed in the future which will be supported bycmake
you can switch to it conveniently.Note that for c/c++ improving compilation time is sometimes limited because of headers included through the preprocessor (in particular when using header-only libs, for instance boost & eigen) which hopefully will be replaced by the proposal of modules (in a technical review of c++11 or eventually in c++1y). Check out this presentation for details on this issue.
check out SCons. For example Doom 3 and Blender make uses of it.
Ruby's make system is called rake: http://rake.rubyforge.org/
Looks quite promising.
There's always Ant: http://ant.apache.org, which I personally find horrendous. It's the de-facto standard for Java development, however.
FlowTracer from RTDA is another good choice that I have seen used commercially in a large scale environment (tens of thousands of jobs): http://www.rtda.com/flowtracer-design-flow-infrastructure-software
It has a GUI which shows the dependency graph with color-coded boxes for jobs and ovals for files. When the number of jobs and files gets high, a GUI-based tool like FlowTracer is pretty much essential.
The initial setup cost is higher than Make. There's a learning curve for setting up your first flow using it. After that, it gets quicker.