SCons
Software development tool
From Wikipedia, the free encyclopedia
SCons is a software development tool that analyzes source code dependencies and operating system adaptation requirements from a software project description and generates final binary executables for installation on the target operating system platform. Its function is similar to the more popular GNU build system.
| SCons | |
|---|---|
![]() | |
| Original author | Steven Knight |
| Initial release | December 13, 2001[1] |
| Stable release | 4.10.1[2]
/ November 16, 2025 |
| Written in | Python |
| Operating system | Cross-platform |
| Type | Software development tools |
| License | MIT License |
| Website | scons |
| Repository | github |
The tool generates Python scripts for project configuration and build logic.
History
The Cons software construction utility, written in Perl, was created by Bob Sidebotham in 1999.[3] It served as a base for the ScCons build tool, a design which won the Software Carpentry project SC Build competition in August 2000.[4] ScCons was the foundation for SCons.
SCons inspired the creation of Waf, formerly known as SCons/BKsys, which emerged in the KDE community. For some time, there were plans to use it as the build tool for KDE 4 and beyond, but that effort was abandoned in favor of CMake.[5]
Notable projects that use SCons (or used it at one time) include: The Battle for Wesnoth,[6] Battlefield 1942,[citation needed] Doom 3,[7] gem5,[8] gpsd,[9] GtkRadiant,[10] Madagascar,[11] Nullsoft Scriptable Install System,[12] OpenNebula,[13] VMware,[citation needed], Wolfenstein: Enemy Territory,[14] XORP and MCA2,[15] openpilot[16] and Godot.[17]
.csig is the SCons Content Signature file format.
Features
Major features include:
- Configuration files are Python; user-written builds can leverage a general-purpose, cross-platform programming language
- Dependency analysis for C, C++ and Fortran
- Dependency analysis is extensible through user-defined scanners for other languages or file types; unlike GNU Compiler Collection (GCC) dependency analysis, SCons uses a regular expression scan for included source files
- Built-in support for C, C++, D, Java, Fortran, Objective-C, Yacc, Lex, Qt and SWIG, as well as TeX and LaTeX documents
- Support for other languages via custom builders
- Building from central repositories of source code and pre-built targets
- Ability to use Visual Studio, including the generation of .dsp, .dsw, .sln and .vcproj files
- Detection of file content changes using MD5 signatures; optional, configurable ability to use traditional timestamps
- Ability to do parallel builds, maintaining a specified number of jobs running simultaneously regardless of directory hierarchy
- Autoconf-like support for finding #include files, libraries, functions and typedefs
- Global view of dependencies, so multiple build passes or reordering targets is not required.
- 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; known to work on POSIX systems (including Linux, AIX and OS/2, *BSD Unices, HP-UX, SGI IRIX, Solaris, illumos), Windows NT, OS X
Examples
The following is an SConstruct file that builds a hello world C program using the default platform compiler:
Program("hello-world.c")
The following is a SConstruct file for a project that includes two source files and specifies build tool options:
env = Environment()
env.Append(CPPFLAGS=["-Wall", "-g"])
env.Program("hello", ["hello.c", "main.c"])
See also
- Buildout
- qmake – Software build automation tool
- Qbs (build tool)
- Premake – Cross-platform build tool for configuring platform-specific builds
- List of build automation software
