is a software construction tool (build tool, or make tool) implemented in PythonLanguage
. It uses Python scripts as "configuration files" for software builds. Based on the design that won the Software Carpentry build tool competition, SCons solves a number of problems associated with other build tools, especially including the classic and ubiquitous Make itself.
In its evolution, scons will be more general than a make replacement -- it will be a Gnu Build System replacement. The Gnu Build System (GBS) is also known as the set of Autotools (autoconf, automake, autoheader, etc...)
Distinctive features of SCons include:
- modular design, lending itself to embedding in other applications
- a GlobalView? of all dependencies in the source tree
- an improved model for ParallelBuilds? (-j)
- automatic scanning of files for dependencies
- use of MD5 signatures for deciding whether a file is up-to-date
- use of MD5 signatures instead of traditional file timestamps available as an option
- use of Python functions or objects to build target files
- easy user extensibility.
It is much easier to use than NantTool
. Spend a few hours with NantTool
, trying to get a project going, then try SconsBuildTool
. You won't go back.
It's the Cadillac of build tools - and it's free. What? If i didn't know it i wouldn't want to after reading this...
Performance / scalability seems to be quite an issue for scons. My experience with it has been with two BuildSystem
s that were both originally written in scons (and saw benefits in both cases from the scons' ease of use) but then had to be rewritten due to poor performance. The first seemed to suffer from scons doing many unnecesary checks for files in the filesystem (this apparently has been fixed) and the second seemed to spend most of its time churning through Python code. In both cases performance was good for small test projects but then when it was ramped up for use by everyone it fell down.