Fact-checked by Grok 2 weeks ago

SCons

SCons is an construction tool that functions as a cross-platform alternative to the classic Make utility, integrating capabilities such as automatic dependency analysis, parallel builds, and built-in support for compiler caches and configuration akin to /. Written in , it employs Python-based configuration files (SConscript files) to define build processes, enabling extensible and readable build definitions that automatically detect dependencies using signatures to rebuild only when necessary. Originally developed as ScCons following its win in the Software Carpentry SC Build competition in August 2000, SCons evolved from the earlier Cons build tool and was renamed to emphasize its independence and clarity as a standalone project. It supports a broad array of programming languages, including C, C++, D, Java, Fortran, Yacc, Lex, Qt, SWIG, TeX, and LaTeX, with users able to extend functionality through custom Builders for additional languages or tasks. SCons is designed for reliability, speed, and ease of use across diverse environments, running on platforms such as , various systems (including AIX, BSD, , , and ), Windows (7 and later), macOS, and OS/2. Notable features include parallel execution for faster builds, a global view of dependencies to avoid inconsistencies, and integration with tools like project files (.dsp, .dsw, .sln, .vcproj). The tool's emphasis on non-recursive build structures helps mitigate common issues in traditional makefiles, such as order-of-execution dependencies, making it particularly valuable for complex software projects.

Background

Definition and Purpose

SCons is an open-source software construction tool implemented in Python, designed to automate the building of software from source code by analyzing dependencies and adapting to operating system differences. It functions as a build system that determines which components need rebuilding and executes the necessary commands, ensuring efficient and accurate software construction across platforms such as POSIX systems (Linux/UNIX) and Windows. The primary purpose of SCons is to provide a cross-platform alternative to traditional tools like Make, with an emphasis on ease of use, reliability, and extensibility for developers. By leveraging 's full programming capabilities, SCons enables users to define build processes in standard Python scripts, known as SConstruct files at the top level and SConscript files for modular hierarchies, eliminating the need for a custom syntax or shell scripting. This approach allows for flexible, order-independent build definitions that enhance maintainability and reduce errors in complex projects. SCons is distributed under the , which permits free use, modification, and redistribution. The official website is scons.org, where documentation and downloads are available, and the source code is hosted on at github.com/SCons/scons.

Predecessors

SCons traces its roots to earlier build tools that emphasized automated dependency management and script-based configuration to simplify software construction over traditional Makefiles. The primary predecessor is , a utility developed by Sidebotham and first released in 1996. Written in , Cons was designed to automate the build process by performing complete dependency analysis across an entire , eliminating the need for developers to manually specify intricate dependencies as in Make. It used a portable for defining build rules, enabling consistent builds across different environments without platform-specific tweaks. A key innovation in Cons was its signature-based dependency tracking, which employed cryptographic checksums to detect changes in file contents rather than relying solely on timestamps, ensuring accurate rebuilds even if files were modified externally or timestamps were unreliable. This approach provided a global view of dependencies, sequencing builds efficiently while maintaining a database of signatures in simple disk files for multi-developer collaboration. Building directly on Cons, ScCons emerged as an early Python-based adaptation that reimplemented its core architecture while leveraging Python's readability and extensibility. Developed as part of the Software Carpentry initiative, ScCons won the SC Build competition in August 2000, a contest aimed at creating improved tools for scientific . This victory highlighted ScCons' potential as a for a more accessible build system, retaining Cons' emphasis on automatic scanning for dependencies and content-based signatures but shifting to Python scripts for configuration to reduce the for non-experts. The tool's design focused on portability and ease of use, allowing build definitions that were executable code rather than declarative syntax, which influenced the foundational model for subsequent tools. These predecessors introduced critical concepts like MD5-like signature checks for robust dependency resolution and script-driven, platform-independent build specifications, which addressed limitations in tools like Make by prioritizing and developer productivity.

Development History

Origins and Initial Development

SCons originated as a response to the limitations of existing build tools like Make and its successor , which suffered from fragile recursive invocation mechanisms, static lists, and platform dependencies due to 's implementation. , a principal maintainer of —a -based tool developed by Bob Sidebotham in 1996 and later transferred to the —sought to create a more portable and maintainable alternative. The project began as ScCons, an entry in the Software competition, where it won for its innovative design, but developed it independently thereafter to address issues like poor error handling in Make and the of specialized syntax in predecessors. The initial development team was led by , with key early contributors including Chad Austin, Charles Crain, Steve Leblanc, and Anthony Roach. Recognizing the benefits of 's readability and cross-platform compatibility, the team rewrote the tool in pure to enhance maintainability and reduce dependencies on external languages like . This shift allowed for a more extensible architecture while preserving Cons's core strengths in dependency management. In 2000, the project was renamed from ScCons to SCons by dropping the middle 'c' to establish independence from Software Carpentry tools and simplify branding. The first public release, version 0.5, occurred on December 13, 2001, under the , marking SCons's availability on . This initial version focused on improving cross-platform support through 's native portability and lowering the syntax by using standard scripts for build configuration, thereby making the tool more accessible to developers familiar with . These efforts addressed key pain points in tools like and Make, such as inconsistent error reporting and limited adaptability across operating systems.

Key Milestones and Releases

SCons achieved its first stable release with version 1.0.0 on August 12, 2008, marking the introduction of a stable after years of development from its initial prototype, which stabilized core functionality for broader adoption. Version 2.0.0 followed on June 14, 2010, focusing on performance enhancements through optimized dependency scanning and build execution, while dropping support for versions prior to 2.4 to streamline the codebase. This release addressed concerns that had prompted external forks, including Waf in 2007, which originated as a performance-optimized of SCons due to dissatisfaction with its handling of large projects. Subsequent updates included version 2.3.0 on March 2, 2013, which improved integration with Microsoft Visual Studio environments, enabling better generation of project files and toolset detection for Windows development workflows driven by adoption in enterprise-scale builds. Version 3.0.0 arrived on September 18, 2017, introducing full support for 3 (starting from 3.5), alongside compatibility with 2.7, to align with evolving language standards and prevent rebuild cascades from interpreter changes. In 2014, the project transitioned its source code repository from (using ) to , facilitating increased contributions and issue tracking through Git-based workflows. The latest stable release, 4.10.1, was issued on November 16, 2025, emphasizing bug fixes, enhanced compatibility for Windows toolchains, and support for 3.12 to ensure seamless operation in modern environments. SCons remains actively maintained by its open-source under the SCons , with regular releases addressing security vulnerabilities, platform compatibility, and incremental optimizations.

Technical Design

Core Architecture

SCons represents software builds as a (DAG) of , where each encapsulates a build artifact, such as a file or task, and edges denote dependencies between them. This node-DAG model enables efficient dependency analysis and incremental builds by tracking changes across the graph, ensuring that only affected are rebuilt. are instances of the Node class or its subclasses, which maintain like timestamps, signatures, and content-derived dependencies, forming the foundational structure for all build operations. Builders and scanners are integral components that populate and refine this DAG. Builders define the transformation actions applied to source nodes to produce target nodes, such as compiling C source files into object files using a specified compiler command; for example, the Program builder orchestrates linking multiple objects into an executable. Scanners complement builders by automatically inspecting source node contents to identify implicit dependencies, like header file inclusions in C code, and adding corresponding edges to the DAG without manual specification. These components interact through construction environments, where builders are registered and scanners are associated with specific file types to ensure comprehensive dependency detection. Environment objects serve as configurable containers that encapsulate build settings, including variables for tools, flags, and paths, allowing for variant-specific builds like debug or release configurations. Created via the Environment() function, these objects hold dictionaries of variables (e.g., CC='gcc', CCFLAGS=['-O2']) that are interpolated into builder actions using dollar-sign notation, supporting recursive substitution for dynamic command generation. Multiple environments can be instantiated or cloned to handle diverse build variants, with each influencing the nodes created by associated builders and scanners. The execution engine, centered on the class, orchestrates the build process by traversing the DAG to schedule and execute tasks. The performs a topological sort on the to determine build order, evaluating states to identify up-to-date or outdated tasks, and dispatching jobs—wrappers around updates—for execution. It supports incremental builds by skipping unchanged s and enables through configurable job pools, where multiple tasks run concurrently if their dependencies are resolved, enhancing for large projects. This engine integrates with the node-DAG, builders, and environments to ensure reliable, ordered execution of the build script's directives.

Configuration Mechanism

SCons employs a Python-based scripting system for defining and customizing build configurations, allowing users to specify build rules, dependencies, and options in a flexible, programmatic manner. The primary entry point is the SConstruct file, typically located at the root of the project directory, which SCons reads and executes to initiate the build process. This file serves as the top-level , encapsulating the overall build logic and invoking subsidiary scripts as needed. For larger projects, SConscript files enable modular breakdowns, where individual SConscript files handle specific components or directories, called via the SConscript() , such as SConscript('subdir/SConscript'). Variable sharing across these files is managed through Export() and () functions; for instance, Export('env') makes an available to child scripts, while ('env') retrieves it in the target file, supporting both specific names and wildcards like '*'. Additionally, Return() allows values, such as generated object s, to be passed back to the calling . The basic syntax leverages Python code directly within these scripts, integrating SCons-specific functions for common tasks. A construction environment is created using env = Environment(), which holds variables, builders, and tools defining how targets are built. Builders like Program are then invoked on the environment, e.g., env.Program(source='file.c'), to compile source files into executables. Command-line customization is facilitated by AddOption(), such as AddOption('--prefix', dest='prefix', help='installation prefix'), which parses user-provided flags and integrates them into the build via GetOption('prefix'). Construction variables within the environment can be set directly (env['CC'] = 'gcc'), appended (env.Append(CCFLAGS=['-g'])), or replaced (env.Replace(CPPDEFINES=['DEBUG'])), providing fine-grained control over tool invocations. Extensibility is a core strength, enabling users to tailor SCons to specialized needs through custom definitions. Custom Builders can be created as functions or command wrappers, e.g., bld = Builder(action='custom_command $SOURCES'), then attached to an environment via env['BUILDERS']['Custom'] = bld, allowing domain-specific actions like generating . Tools, which encapsulate scanner and builder logic for languages or utilities, are added using env.Tool('toolname') or specified in the initial (TOOLS=['gcc', 'customtool']), with external tools integrated by placing modules in site_scons/site_tools directories that implement generate() and exists() functions. User-defined Variables, such as those for paths or flags, are declared via Variables('vars').Add('OPTIMIZE', '-O3') and processed with vars.Update(env), streamlining option handling. This -centric approach also supports seamless integration with external tools through imports of standard or third-party modules, such as using subprocess for invoking non-standard compilers. Best practices emphasize and in configurations. To avoid global side effects that could lead to unpredictable builds, users should prefer local variable scoping and clone environments with env.Clone() for isolated modifications, rather than altering a shared global state. For out-of-tree builds, which keep source and derived files separate, VariantDir is recommended, invoked as SConscript('src/SConscript', variant_dir='build', duplicate=0) to link sources without physical duplication, reducing clutter and supporting parallel variant builds like debug/release. These techniques ensure scalable, error-resistant configurations while leveraging Python's expressiveness.

Key Features

Dependency Management

SCons employs a to model the relationships between source files, intermediate targets, and final outputs, ensuring that builds are incremental and only rebuild necessary components. At the core of this system is automatic scanning, where built-in analyze the content of source files to detect implicit dependencies. For instance, the C/C++ scanner examines for preprocessor directives such as #include statements to identify header files, while the Fortran scanner looks for USE statements and module definitions to track inter-module dependencies. Similarly, the Java scanner processes classpaths and statements to resolve class dependencies. These operate during the build configuration phase, parsing file contents without executing the build commands, which allows SCons to construct a complete before any compilation occurs. To track changes precisely and avoid unnecessary rebuilds, SCons uses signature-based mechanisms rather than relying solely on file timestamps. By default, it computes content signatures for source files using MD5 hashes of their entire contents, enabling detection of even minor modifications like added comments that do not alter the output. For derived files (targets), SCons calculates composite signatures based on the signatures of their inputs, the build command, and any associated metadata, ensuring that targets are rebuilt only if their effective inputs have changed. This approach provides greater accuracy than timestamp-based methods, as it ignores superficial file system updates while capturing semantic changes. Users can configure alternative deciders, such as timestamp matching, but content signatures are recommended for reliability in most scenarios. While implicit dependencies are handled automatically through scanners for efficiency and reduced error-proneness, SCons also supports explicit dependency declarations via the Depends() function in SConscript files. This is useful for non-standard relationships that scanners cannot detect, such as dependencies on generated files or external resources, where a user might specify Depends(target, prerequisite) to enforce a build order. Automatic handling is preferred whenever possible, as it minimizes manual intervention and adapts to changes in source code structure. In cases of dependency cycles or complex graphs, SCons traverses the (DAG) to identify and rebuild only affected nodes, propagating changes through the tree. For distributed or remote execution environments with shared caches, the --random option randomizes the build order of independent dependencies, mitigating contention and ensuring consistent results across parallel or remote invocations.

Build Execution and Optimization

SCons executes builds by traversing a (DAG) of dependencies to determine the necessary actions, ensuring that targets are rebuilt only when required. Parallel execution is supported through the --jobs or -j option, which specifies the maximum number of concurrent jobs, allowing multiple build commands to run simultaneously while respecting dependency order. This feature leverages automatic scheduling based on the DAG, enabling significant reductions in build times for suitable configurations, such as when the build graph has many independent nodes. The built-in caching mechanism stores derived files in a designated , configurable via the CacheDir in SConscript files, to avoid redundant rebuilds across invocations or machines. When enabled, SCons checks the for up-to-date targets before building, using options like --cache-show to display retrieval statistics and --cache-force to always retrieve from if available. Integration with external tools like ccache is facilitated by setting environment variables or tool specifications, enhancing compilation caching for repeated builds. Shared caches can be implemented by pointing to a network-accessible , allowing reuse across multiple development machines. Platform adaptations in SCons involve automatic detection of the operating system and available tools, ensuring compatibility without manual configuration. On Windows, it prioritizes Microsoft Visual C++ (MSVC) tools, while on systems, it defaults to or similar chains, searching predefined paths and environment variables like PATH. Path handling accounts for platform-specific separators (e.g., forward slashes on Unix, backslashes on Windows), and construction variables like $ENV propagate adjusted environment settings to commands, supporting cross-platform builds seamlessly. Optimization features include the default use of checksums (signatures) on file contents for change detection, providing more reliable up-to-date checks than simple timestamps, especially in distributed or timestamp-inconsistent environments. The --clean or -c option removes built targets and associated files, forcing full rebuilds on subsequent runs, while options like --implicit-deps-changed can invalidate cached implicit dependencies for a fresh . Performance analysis is available via the --profile or -p , which outputs timing details for each command, total build duration, and resource usage to identify bottlenecks.

Usage and Examples

Basic Build Scripts

SCons build scripts are typically written in files named SConstruct or SConscript, placed in the root or subdirectories of a project. These scripts define construction environments and specify targets using builder methods, allowing SCons to automate compilation and linking without manual dependency specification. For simple builds, a single SConstruct file in the current directory suffices, with outputs generated alongside source files by default. A basic "" example demonstrates core usage: create a construction environment with env = Environment(), then use the Program builder to compile a single C source file into an executable. The following SConstruct script processes hello.c (containing a standard main function printing "Hello, World!") to produce an executable named hello:
env = Environment()
env.Program('hello', 'hello.c')
Running this script compiles and links the file using the default (typically cc or gcc), generating hello.o intermediately and the final hello in the current directory. This approach infers toolchains and flags automatically, ensuring portability across platforms. For multi-source programs, the Program builder extends to multiple files by listing sources in an array. Consider building an executable foo from foo.c and bar.c:
env = Environment()
env.Program('foo', ['foo.c', 'bar.c'])
SCons compiles each source to an object file (foo.o and bar.o), then links them into foo, tracking dependencies to rebuild only changed files on subsequent runs. This scales to any number of sources while maintaining the target-first syntax for clarity. To execute a build, invoke scons from the project directory containing SConstruct; it processes all defined targets in dependency order. Specify a single target with scons <target>, such as scons hello, to build only that item. For verbose output, use scons --debug=explain, which details rebuild decisions (e.g., "file 'hello.c' is precious, not rebuilding"); quieter modes include scons -Q to suppress non-command messages. Parallel execution is available via scons -j N for N jobs, leveraging multi-core systems. File organization defaults to the current directory for builds, keeping outputs near sources for simplicity. To copy binaries to installation paths, use the Install builder within an environment:
env = Environment()
hello = env.Program('hello', 'hello.c')
env.Install('/usr/bin', hello)
env.Alias('install', '/usr/bin')
This first builds hello, then installs it to /usr/bin/hello when running scons install, creating an alias for targeted deployment without affecting the default build.

Advanced Configurations

Examples in this section are based on SCons documentation up to version 4.10.1 (as of November 2025); consult the official documentation for any updates. SCons supports modular builds through hierarchical structures, allowing projects to be organized across multiple directories by calling subsidiary SConscript files from a parent SConstruct or SConscript. This approach facilitates code reuse and maintainability in large codebases. For instance, a top-level SConstruct can invoke SConscript('src/SConscript') to process build logic in a subdirectory, with paths relative to the calling file or using '#' for top-level references. To share code across projects, the Repository function specifies external directories where SCons searches for source or derived files, such as env.Repository('/path/to/shared/codebase'), which integrates with paths like CPPPATH for header dependencies. Variables like construction environments can be exported with Export('env') before the call and imported in the subsidiary script with Import('env'), while Return('objs') collects results like object files for further use in the parent, such as env.Library('shared_lib', objs). Variant builds in SCons enable the creation of separate directories for different configurations, such as debug and release, to isolate outputs and avoid source tree pollution. The VariantDir function maps sources to a build directory, as in VariantDir('build/debug', 'src'), followed by SConscript('src/SConscript', variant_dir='build/debug', duplicate=0) to prevent source duplication via links. For conditional compilation, environments can be cloned with variant-specific flags, like debug_env = env.Clone(CCFLAGS='-g') and release_env = env.Clone(CCFLAGS='-O2'), then used to build in respective directories: debug_env.Program('build/debug/prog', ['src/main.c']). To implement a user-defined debug flag, use AddOption('--enable-debug', dest='enable_debug', default=False); then if GetOption('enable_debug'): env.Append(CCFLAGS=['-g']) else: env.Append(CCFLAGS=['-O2']), allowing builds like scons --enable-debug for debug instrumentation. Multi-language support in SCons extends to integrating tools like for creating bindings from C++ code, automating wrapper generation and linking. By adding the swig tool to the with tools=['default', 'swig'], SCons processes interface files alongside C++ sources. A typical build uses env.SharedLibrary('module', ['wrap.i', 'lib.cxx'], SWIGFLAGS='-python'), where wrap.i defines the interface, lib.cxx provides the C++ implementation, and SWIG generates wrap_wrap.cxx for compilation into a importable in . This setup ensures dependencies on headers and are scanned automatically, producing module.so (or .pyd on Windows) for seamless C++- interoperability. Custom tools in SCons are defined using the class to handle specialized tasks beyond built-in support, such as processing documents. A builder can be created as LaTeXBuilder = (action='pdflatex $SOURCE', suffix='.pdf', src_suffix='.tex'), then attached via env.Append(BUILDERS={'PDFLaTeX': LaTeXBuilder}), allowing invocation like env.PDFLaTeX('document.pdf', 'document.tex'). This executes pdflatex on the .tex source to generate the .pdf target, with optional source_scanner for detecting \include dependencies to ensure incremental rebuilds. SCons integrates with frameworks like through dedicated tools from scons-contrib. Note that the core 'qt' tool (for 3) is deprecated since SCons 4.3; 4 reached end-of-life in 2015. For 4, the qt4 module from scons-contrib provides builders for , uic, and rcc processing, though modern projects should use 5 or 6 with updated contrib tools. Loading the tool with env.Tool('qt4') enables Qt-specific actions, including qt4.UserAction for custom steps, as in env.qt4.UserAction(source, target, env), to handle user-defined operations during the build. For Visual Studio projects, the MSVSProject builder generates legacy .vcproj and .sln files from SCons specifications (compatible with 2003-2008), using env.MSVSProject(target='project.vcproj', srcs=['file1.cpp', 'file2.cpp'], buildtarget='project'), which configures includes, libraries, and variants for compatibility while maintaining SCons as the primary build system. For modern (2010+), which uses .vcxproj (MSBuild) format, consider alternative generators or integrations.

Adoption and Community

Notable Uses in Projects

SCons has been notably adopted in game development projects for its robust handling of complex, cross-platform builds. id Software utilized SCons as the primary build tool for Doom 3 in 2004, enabling efficient compilation across Windows and Linux environments with Python-based configuration scripts that simplified dependency resolution for the game's large codebase. The Godot game engine has employed SCons since 2014 for its core build system, leveraging its ability to manage multi-platform compilations without reconfiguration, which supports Godot's export templates for desktop, mobile, and web targets. In scientific computing, SCons has facilitated reliable builds for high-stakes tools. The Fermi Large Area Telescope (LAT) collaboration, part of NASA's mission, adopted SCons in the mid-2000s to replace legacy systems, using it for compiling simulation, reconstruction, and software across distributed , Windows, and environments; this transition improved dependency management and customization for physics simulations, reducing build inconsistencies in large-scale pipelines. Beyond these areas, SCons supports diverse domains requiring extensible builds. In 3D graphics, Blender incorporated SCons starting with version 2.42 (around 2006) for compiling its C/C++ codebase, appreciating its Python integration for custom builders that handled platform-specific libraries like and embeddings in documentation workflows. The RT-Thread for devices relies on SCons as its default build tool, enabling concise scripts for cross-compiling kernel and applications to microcontrollers via , IAR, or , with extensions for menu-driven configuration in resource-constrained projects. These adoptions highlight SCons' reliability for large codebases and ease of extension for custom tools, such as integrating for documentation in complex projects.

Development and Support

SCons is governed by the SCons Foundation, a established in 2001 to oversee its maintenance and development. The project is co-managed by key contributors including Bill Deegan and Gary Oberbrunner, who lead the core team responsible for reviewing and merging contributions. Development occurs primarily through the project's repository, where external contributors submit pull requests that undergo rigorous review by the core team to ensure code quality and alignment with project goals. This governance model emphasizes while maintaining stability for users across platforms. Community resources support both users and developers in engaging with SCons. Active mailing lists include scons-users for general questions and scons-dev for development discussions, facilitating peer support and idea sharing. Real-time assistance is available via the IRC channel #scons on , and an active server provides additional channels like #scons-help for quick queries. Bug triage is handled through issues, but only after initial discussion on the mailing lists to confirm novelty and avoid duplicates; the community collectively prioritizes and tracks resolutions. Comprehensive , including the detailed User's Guide and man pages, serves as a primary resource for and best practices. Contributions to SCons follow structured guidelines to uphold code integrity. Developers must adhere to Python coding standards, with recommendations to use tools such as black for formatting, pylint or ruff for linting, ensuring compatibility with Python 3.7 and later without external dependencies beyond the standard library. Every proposed change requires accompanying tests run via the runtest.py framework, covering unit tests with unittest and end-to-end scenarios; all tests must pass on supported platforms like Linux and Windows before review. The release process accumulates bug fixes and features on the main branch, followed by building packages using setuptools and updating the changelog to document changes, with no routine backports to prior versions unless critical. The support ecosystem enhances accessibility and adoption. SCons is distributed via PyPI for installation with pip install SCons, and Homebrew on macOS with brew install scons, simplifying setup without manual compilation. For users transitioning from tools like Make, the User's Guide includes sections mapping common Makefile constructs to SCons equivalents, aiding migration without a dedicated converter tool. Since its inception in , SCons has maintained a steady contributor base, with ongoing activity evidenced by regular releases and community-driven enhancements.

References

  1. [1]
    SCons: A software construction tool - SCons
    SCons is an Open Source software construction tool. Think of SCons as an improved, cross-platform substitute for the classic Make utility with integrated ...Download · Frequently Asked Questions · Documentation · SCons Documentation
  2. [2]
    SCons 4.10.0
    Oct 2, 2025 · SCons is a modern software construction tool - a software utility for building software (or other files) and keeping built software up-to-date.
  3. [3]
    scons - a software construction tool - Ubuntu Manpage
    The scons utility builds software (or other files) by determining which component pieces must be rebuilt and executing the necessary commands to rebuild them.
  4. [4]
    Frequently Asked Questions - SCons
    SCons is distributed under the MIT license, an OSI-approved Open Source license. This means you can use it, modify it, or even redistribute it without charge, ...SCons Questions · Why doesn't SCons find my... · How do I get SCons to find my...
  5. [5]
    SCons - a software construction tool - GitHub
    SCons is an Open Source software construction tool which orchestrates the construction of software (and other tangible products such as documentation files)
  6. [6]
    SCons Design and Implementation
    SCons is a software construction tool (build tool, or make tool) implemented in Python, which uses Python scripts as configuration files for software builds.Missing: 1999 | Show results with:1999
  7. [7]
    Cons - Software Construction System - GNU.org
    Cons is a system for constructing, primarily, software, but is quite different from previous software construction systems.Missing: 1999 | Show results with:1999
  8. [8]
    Cons: A Software Construction System - The Perl Journal, Spring 1998
    Cons: A Software Construction System. Bob Sidebotham. Understandably, many Perl programmers don't like having to program in low-level languages like C and C++ ...Missing: 1999 | Show results with:1999
  9. [9]
    [PDF] Design - SCons
    At the command line, SCons presents an easily-grasped tool where configuration files are Python scripts, reducing the need to learn new build-tool syntax.Missing: origins | Show results with:origins
  10. [10]
    December 2014, “Community Choice” Project of the Month – SCons
    Dec 1, 2014 · SCons Team: Steven Knight, the original author of SCons, worked tirelessly with the scientific computing community, which sponsored Software ...Missing: origins initial
  11. [11]
    native_client/src/third_party/scons-2.0.1 - Git at Google
    + + + +RELEASE 1.0.1 - Sat, 06 Sep 2008 07:29:34 -0700 + + From Greg Noel: + ... + + + +RELEASE 0.94 - Fri, 07 Nov 2003 05:29:48 -0600 + + From Hartmut ...
  12. [12]
    SCons 2.0.0.final.0 is available
    SCons production release 2.0.0.final.0 is now available from the download page at SourceForge. This is the production release for the 2.0 series.
  13. [13]
    The maintainers of SCons have long argued perceived performance ...
    It was created about twelve years ago as a fork of SCons because the author was dissatisfied with its performance problems. WAF is in my opinion a very capable ...Missing: 2007 | Show results with:2007
  14. [14]
    SCons - Browse /scons/2.3.0 at SourceForge.net
    SCons - a software construction tool. Welcome to the SCons development tree. The real purpose of this tree is to package SCons for production distribution ...
  15. [15]
    SCons - PyPI
    SCons 3.0.0. pip install SCons==3.0.0. Copy PIP instructions. Newer version available (4.10.0). Released: Sep 18, 2017. Open Source next-generation build tool ...
  16. [16]
    SCons Downloads
    SCons is provided in several different forms, to suit different purposes: Python packages, the scons bundles, the scons-local bundles, and the scons-src bundles ...
  17. [17]
    Chapter 3. Overview
    ### Summary of SCons Architecture
  18. [18]
    4.4. Dependencies
    ### Builders and Scanners in SCons
  19. [19]
    4.2. Construction Environments
    ### Summary of Construction Environments in SCons
  20. [20]
    Chapter 6. Dependencies - SCons
    SCons gives you two ways to use time stamps to decide if an input file has changed since the last time a target has been built.Missing: management | Show results with:management
  21. [21]
    22.6. Minimizing Cache Contention: the --random Option - SCons
    To alleviate such contention for the cache, you can use the --random command-line option to tell SCons to build dependencies in a random order: % scons -Q -- ...Missing: remote execution
  22. [22]
  23. [23]
  24. [24]
  25. [25]
  26. [26]
  27. [27]
  28. [28]
  29. [29]
  30. [30]
  31. [31]
  32. [32]
  33. [33]
  34. [34]
  35. [35]
  36. [36]
  37. [37]
  38. [38]
  39. [39]
    id-Software/DOOM-3: Doom 3 GPL source release - GitHub
    ... scons.org/ Issue the scons command in the neo/ folder. Compiling on ... (3) Permission for use of this software is granted only if the user accepts ...
  40. [40]
    Building the doom3 source code on linux (Ubuntu) tutorial - ModDB
    Jan 1, 2012 · It uses an alternative called 'scons' (www.scons.org). "SCons is a software construction tool—that is, a superior alternative to the classic ...
  41. [41]
    Introduction to the buildsystem - Godot Docs
    Godot uses the SCons build system, which is maintainable and easy to set up. Compiling is done by running `scons`.Other Build Options · Overriding The Build Options · Export Templates<|separator|>
  42. [42]
    Introduction to the buildsystem - Godot Docs
    Godot uses SCons for building, which is complex due to multiple platforms and cross-compiling. SCons can handle multiple platforms without breaking builds.Scons · Platform Selection · Resulting Binary
  43. [43]
    Changing Horses in Midstream: Fermi LAT Computing and SCons
    This paper describes the conversion to and our use of SCons, concentrating on the resulting environment for users and developers and how it was achieved. Topics ...
  44. [44]
    Changing Horses in Midstream: Fermi LAT Computing and SCons
    Members of the Collaboration use ScienceTools for science analysis of real and simulated data to produce analysis products, chief among them exposure maps and ...
  45. [45]
    Dev:2.4/Source/Build systems/Scons/Refactoring - Blender 2.42 - wiki
    Jonathan Jacobs has sent me (NL) a very much cleaned implementation of scons for Blender. I'm currently working on getting it to work on win32 with msvc in a ...
  46. [46]
    How to compile Blender from source on OSX? [closed]
    Apr 18, 2014 · SCons and CMake are two different ways of automating the process of setting up the build. if you're familiar with AutoTools, you can think of ...
  47. [47]
    SCons - RT-Thread document center
    SCons is an open source build system written in the Python language, similar to GNU Make. It uses a different approach than the usual Makefile, but instead uses ...
  48. [48]
    [PDF] RT-Thread Board Port and Application Development
    In SCons, you can write SConscript scripts to compile files in these relatively separate directories and the Export and Import functions in SCons to share data ...
  49. [49]
    Bugs and Feature Requests - SCons
    The SCons project welcomes bug reports and feature requests. The procedure may be a little different than in many open source projects.Missing: annual triage
  50. [50]
    Current Documentation - SCons
    This page contains links to general SCons documentation, and to documentation (man page and User's Guide) for the current stable release of SCons: 4.10.0.
  51. [51]
    SCons Developer's Guidelines
    The SCons distribution is built by SCons itself, using the build front-end and setuptools backend to produce the wheel and sdist. Directly calling python setup.<|control11|><|separator|>
  52. [52]
    SCons - PyPI
    License. SCons is distributed under the MIT license, a full copy of which is available in the LICENSE file. Reporting Bugs.