Automation and SCons
      
        
        
  
    
        
        
- SCons allows us to specify what depends on what and how to update
things that are out of date.
 
- SConstruct is the default name of the root SCons configuration
file
 
- SCons configuration files are collectively called SConscript
files
 
- SConscript files are Python files.
 
- SCons tasks are attached to a construction environment, which can be
inherited from the shell’s active environment.
 
- Use 
# for comments in SConscript files. 
- Write tasks as lists of targets, sources, and actions with the
Command class 
- Use an 
Alias to collect targets in a convenient alias
for shorter build commands. 
- Use the 
Default function to limit the number of default
targets to a subset of all targets. 
- Use 
${TARGET} to refer to the target of the current
task. 
- Use 
${SOURCES} to refer to the dependencies of the
current task. 
- Use 
${SOURCES[0]} to refer to the first dependency of
the current task. 
- SCons results depend on processing scripts as well as data
files.
 
- Dependencies are transitive: if A depends on B and B depends on C, a
change to C will indirectly trigger the pipeline to update to A.
 
- SCons content signatures help prevent recomputing work if
intermediate targets’ contents do not change after recreation.
 
- Use the 
Builder function and Append the
construction environment BUILDERS dictionary to define
common actions. 
- Use the 
AddMethod function and Python functions to
define pseudo-builders with custom tailored task handling. 
- Use the special SCons variable 
COMMAND_LINE_TARGETS to
perform dynamic handling that depends on command line target
requests. 
- Define variables by assigning values to names with Python
syntax
 
- Reference variables in action strings using SCons substitution
syntax 
${...}. 
- SCons uses the Python programming language with acces to all of
Python’s many built-in functions.
 
- SCons provides many functions that work natively with the internal
node objects required to manage the SCons directed graph.
 
- Use the SCons 
Glob function to get lists of SCons nodes
from file names matching a pattern. 
- Use Python built-in and standard library modules to manage file
names and paths.
 
- Document SConstruct options, targets, and aliases with the SCons
default_ans and DEFAULT_TARGETS variables and
the Help function. 
- SCons and SConscript files save time by automating repetitive work,
and save thinking by documenting how to reproduce results.