SCons is a software construction tool that is a superior alternative to the classic "Make" build tool that we all know and love. SCons is implemented as a Python script and set of modules, and SCons "configuration files" are actually executed as Python scripts. This gives SCons many powerful capabilities not found in other software build tools.
We make SCons available in three distinct packages, for different purposes.
- The scons package is the basic package to install SCons. You don't need any other package if you just want to try out SCons.
- The scons-local package executes as a SCons standalone, out of a local directory. It's intended to be dropped in to and shipped with packages of other software for builds with SCons but not as a required install.
- The scons-src package is the complete source tree, including everything we use to package SCons and all of the regression tests.
- Configuration files are Python scripts--use the power of a real programming language to solve build problems.
- Reliable, automatic dependency analysis built-in for C, C++ and Fortran--no more "make depend" or "make clean" to get all of the dependencies. Dependency analysis is easily extensible through user-defined dependency Scanners for other languages or file types.
- Built-in support for C, C++, D, Java, Fortran, Yacc, Lex, Qt and SWIG, and building TeX and LaTeX documents. Easily extensible through user-defined Builders for other languages or file types.
- Building from central repositories of source code and/or pre-built targets.
- Built-in support for fetching source files from SCCS, RCS, CVS, BitKeeper and Perforce.
- Built-in support for Microsoft Visual Studio .NET and past Visual Studio versions, including generation of .dsp, .dsw, .sln and .vcproj files.
- Reliable detection of build changes using MD5 signatures; optional, configurable support for traditional timestamps.
- Improved support for parallel builds--like make -j but keeps N jobs running simultaneously regardless of directory hierarchy.
- Integrated Autoconf-like support for finding #include files, libraries, functions and typedefs.
- Global view of all dependencies--no more multiple build passes or reordering targets to build everything.
- Ability to share built files in a cache to speed up multiple builds--like ccache but for any type of target file, not just C/C++ compilation.
- Designed from the ground up for cross-platform builds, and known to work on Linux, other POSIX systems (including AIX, *BSD systems, HP/UX, IRIX and Solaris), Windows NT, Mac OS X, and OS/2.
A very powerful pipeline tool that specializes in software construction. A breathe of fresh air from old Make-based systems with little automated dependency handling and the ugliness of M4 scripting. Once you have constructed the primary build file, simple libraries and binary compilation only takes a few lines of SCons API commands. Automated dependency validation ensures efficient, consistent, highly-parallel, builds. SCons API is very extensible; thus, supporting user toolchain additions with a bit of python foo. I have used SCons for 2-3 years and added custom toolchain for source generators and various languages. The developer and list have been very helpful, and regularly active.
My favorite software construction tool!
Being able set up a build system in a language as expressive as Python is fantastic. A great solution for true multi-platform compatibility (i.e. native Windows tools as well as Posix-like systems). I only wish it were more widely used.