Traditional makefiles used by make are quite limited in their
functionality. Many using make have come to realise that dealing
with large projects can be difficult and time-consuming, especially
with various levels of inter-dependency between modules. You have
only very basic ways of structuring elements in the project. smake's
Smakefiles (so as not to cause conflicts with make's Makefiles) are
based on Tcl scripts. With smake you have all the benefits of make
plus a stable and mature script lanaguage.
Tcl (often pronounced tickle) is a free script language with
a very simple syntax which is easy to learn but infinitely extendible.
One of the great benefits of Tcl is that everything can be altered
dynamically. Thus, if a project needs to change the behaviour of
some aspects of smake, it can do so at will.
Smakefiles themselves are 100% Tcl with extra commands
provided by smake. You can also load any available Tcl modules and
packages (such as ones for using object-oriented environments), use
namespaces, replace the action for checking dependencies (for instance
to deal neatly with version control) and other Tcl-specific things
in your makefiles.
For more information on Tcl see . To create simple Smakefiles no deep knowledge of Tcl is required. There are only 11 syntactical rules in Tcl. This document does assume some knowledge of them and of basic Tcl concepts. Nothing that a few minutes reading a document or two wont solve.