SCons is a next-generation, cross-platform, build tool. Think of SCons as an improved substitute for the classic Make utility with integrated functionality similar to autoconf/automake and compiler caches such as ccache.
Unlike build tools that invent their own mini-language or wedge a scripting language onto some other configuration file syntax, SCons configuration files are actually Python scripts. The ability to script your build gives you a tremendous amount of flexibility to solve complicated build problems in surprisingly small amounts of maintainable code.
In short, SCons is an easier, more reliable and more flexible way to build software.
This provides much more flexibility for solving difficult build problems than traditional build tools.
C, C++ and Fortran are scanned for dependencies, eliminating the need for a separate make depend step or a make clean to get all of the dependencies. Avoids the time waste from debugging phantom problems that mysteriously disappear after you make clean; make. Easily extended to scan for other languages or file types.
C, C++, D, Java, Fortran, Yacc, Lex, Qt and SWIG. Can also build TeX and LaTeX documents. Easily extended for other languages or file types.
Known to work on Linux, other POSIX systems (AIX, *BSD, HP/UX, IRIX, Solaris), Windows (NT, 2000, XP), Mac OS X, and OS/2.
Built-in support for SCCS, RCS, CVS, BitKeeper and Perforce. On-disk directory trees can be searched for source files or pre-built target files.
Generates .dsp and .dsw files, or .sln and .vcproj files, from the same build configuration used to build on all platforms. Allows Windows developers to do all the productive point-and-click debugging they're used to without having to maintain a separate build configuration just for Windows.
Use of traditional file timestamps instead of MD5 can be configured.
Keeps up to N jobs running simultaneously regardless of directory hierarchy.
Simplifies builds by eliminating multiple passes or reording targets to build everything correctly.
Support for finding #include files, libraries, functions and typedef declarations.
Speeds up multiple builds by allowing developers to share pre-built targets (like ccache, but for any type of target file, not just C/C++ compilation).