SCons is an Open Source software construction tool—that is, a next-generation build tool.
Think of SCons as an improved, cross-platform substitute for the classic Make utility with integrated functionality similar to autoconf/automake and compiler caches such as ccache.
In short, SCons is an easier, more reliable and faster way to build software.
Here are some key features of "SCons":
· 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.
What's New in This Release: [ read full changelog ]
· -- THE $CHANGED_SOURCES, $CHANGED_TARGETS, $UNCHANGED_SOURCES
· AND $UNCHANGED_TARGETS VARIABLES WILL BECOME RESERVED
· A future release (probably 1.3.0) will make the construction
· variable names $CHANGED_SOURCES, $CHANGED_TARGETS,
· $UNCHANGED_SOURCES and $UNCHANGED_TARGETS into reserved
· construction variable names controlled by SCons itself (like
· the current $SOURCE, $TARGETS, etc.).
· Setting these variable names in the current release will generate
· a warning but still set the variables. When they become reserved
· variable names, they will generate a different warning message
· and attempts to set these variables will be ignored.
· SCons configurations that happen to use these variable names
· should be changed to use different variable names, in order
· to ensure that the configuration continues to work with future
· versions of SCons.
· -- THE Options OBJECT AND RELATED FUNCTIONS NOW GENERATE WARNINGS
· Use of the Options object, and related functions BoolOption(),
· EnumOption(), ListOption(), PackageOption() and PathOption()
· were announced as deprecated in release 0.98.1. Since then,
· however, no warning messages were ever implemented for the
· use of these deprecated functions.
· By default, release 1.2.0 prints warning messages when these
· deprecated features are used. Warnings about all deprecated
· features may be suppressed by using the --warn=no-deprecated
· $ scons --warn=no-deprecated
· Or by using the appropriate SetOption() call in any SConscript
· SetOption('warn', 'no-deprecated')
· You may optionally disable just warnings about the deprecation
of the Options object and its related functions as follows:
· SetOption('warn', 'no-deprecated-options')
· The current plan is for these warnings to become mandatory
· (non-suppressible) in release 1.3.0, and for the use of Options
· and its related functions to generate errors in release 2.0.