Battle of the Build Systems - GNU Make

yes, it's a stupid reference, but I like the eye candy. It's also the only build system I can remember seeing in a movie.

Following my previous post where I described what I was looking for in a build system, here I take a look at GNU make, and why I'm not using it.


GNU Make



The first build system I learned, just as I was learning C.

Make is a capable system for a lot of projects, but there are also a lot of documented flaws.

If care (and work and time) is taken, it really is possible to do a lot with it.

For example, dependency management can be eased by cooperating with gcc , but you will have to regenerate the dependency map from time to time.

Portability wise, make is probably the first tool to be ported to a new platform after gcc, but sadly, with some small variations in make's syntax that compromise portability (GNU make vs BSD make vs microsoft make ...). Also, since your are expressing your project using rules and targets defined by native commands you also need to take great care to maintain your makefile relatively portable.

Make would meet most of my requirements for a build system, at the expense of my time, spent crafting clever makefiles and later debugging them.

Had these problems not existed, I would probably not be looking for an alternative in the first place.


Rui Pires

Working as a professional full time remote developer from the Azores since 2011.

Read More