Fork me on GitHub

Further reading

GNU Make comes with a comprehensive manual. For more advanced users, the chapter Quick Reference is indensable, because it provides a condensed list of all the cryptic variables like $<, $@, $+, etc.

When running on Linux, the manual can be accessed with info make.


For large projects, one might be inclined to have a separate Makefile in every directory. This is fine, as long as the Makefiles are combined into one used include (see Variables). It is not acceptable to invoke make recursively, in a style that used to be popular, but should be avoided.


In the beginning of this tutorial it was mentioned that other programs interface with make. Makefiles are often generated by other programs, instead of being written by hand. This is done to deals with portability issues and solve the problem of configuration, something that config-lab.mk and config-home.mk were used for in the tutorial. Two biggest implementations of this funcitonality are cmake and Automake + Autotools. The first one is a bit easier to use, the second one more popular and powerful. Those are probably better options for compiling of software, for projects that are intented to be widely distributed, than bare Makefiles.


For Python programs, a language specific options are usually better. They require very little configuration for simple Python projects, and integrate with centralized distribution systems like (PyPI)[http://pypi.python.org/].