SCons

**SCons** estas konstruilo por programaroj kiu aŭtomate analizas dependecojn de fontkoddosieroj kaj necesajn adaptojn al operaciumo el priskribo de programarprojekto. Ĝi estigas finajn duumajn plenumeblojn por instalado je la cibla operaciuma platformo. Ĝia funkcio estas analoga al la tradicia GNU build system basata sur la iloj *make* kaj *autoconf*.

SCons uzas la programlingvon Python kiel fundamento, same tiel ke ĉiuj programaraj projektaj konfiguroj kaj implementoj de konstruadprocezo estas pythonaj programoj.

## Elstaraj trajtoj 
* Konfigurdosieroj estas pitonaj programoj, kiu signifas ke uzeblas kompleta ĝeneralcela programlingvo.
* Aŭtomata analizo de dependecoj inkluda por C, C++ kaj Fortran. Dependecanalizo etendeblas per skaniloj difinitaj de la uzanto por aliaj lingvoj aŭ dosiertipoj. Malsame al la inkluda dependecanalizo de GCC, ĝi uzas regulaj esprimoj por skani inkludaj fontdosieroj.
* Primitiva subteno de C, C++, D, Java, Fortran, Objective-C, Yacc, Lex, Qt kaj SWIG, same tiel ke TeX kaj LaTeX dokumentoj. Aliaj lingvoj kaj dosiertipoj subteneblas per komponiloj difinitaj de la uzanto.
* Muntado el centralaj deponejoj de fontkodo kaj premuntadaj celoj.
* Primitiva subteno por elŝuti fontdosierojn el sistemoj de versionkontrolado kiel SCCS, RCS, CVS, Subversion, BitKeeper kaj Perforce.
* Primitiva subteno de Microsoft Visual Studio, inklude estigado de dosieroj .dsp, .dsw, .sln kaj .vcproj.
* Detektas ŝanĝojn helpe de MD5 subskriboj; opcia subteno por tradiciaj tempstampoj.
* Subteno por paralelaj muntadoj kiu samtenas iun specifan nombron de taskoj samtempe senrigarde la hierarkion de dosierujoj.
* Serĉo de dosieroj "#include", bibliotekoj, funkcioj kaj "typedefs".
* Malloka vido de ĉiuj dependecoj, tiel ke ne necesas multaj muntadoj nek reordigado de celoj.
* Eblas kunuzi muntitajn dosierojn en kaŝmemoro por plirapidigi pluroblajn muntadojn - kiel cache sed por ĉiu ajn celdosiertipo, ne nur C/C++ muntado.
* Desegnita ekde el komenco por krucplatformaj muntadoj, ĝi funkcias sur POSIX sistemoj (inklude Linukso, AIX, *BSD tipoj, HP-Ux, IRIX, Solaris), Windows NT, OS X, kaj OS/2.

## Historio kaj rilataj projektoj 
La historio de la programo SCons komencis kun la programkonstruilo *Cons* kreita de Bob Sidebotham en 1999. Cons estis redaktita en la programlingvo Perl. Ĝi fariĝis bason por la muntilo *ScCons*, kiu gajnis la *Software Carpentry Design Competition* en la kategorio de la muntiloj en Aŭgusto 2000. ScCons estis la fundamento de SCons.

SCons inspiris la kreadon de Waf, antaŭe konata kiel *SCons/BKsys*, kiu aperis en la KDE komunumo. Dum iom da tempo, oni planis uzi ĝin kiel muntilo por KDE 4 kaj sekvantaj, sed oni finfine preferis CMake.

## Ekzemplaj SCons dosieroj 
La sekvanta simplega dosiero tradukas la dosieron saluton.c uzante la defaŭltan platforman tradukilon.

```python
Program('saluton.c')
```

La sekvanta iomete pli kompleksa ekzemplo kreas medion (anglalingve *Environment*) kiun ĝi uzas por munti la programon saluton.

```python
env = Environment()
env.Append(CPPFLAGS=['-Wall','-g'])
env.Program('saluton',
            ['saluton.c', 'main.c'])
```

## Notindaj aplikaĵoj uzantaj SCons 
* The Battle for Wesnoth,
* Battlefield 1942,
* Blender,
* Csound,
* Doom 3,
* gem5,
* gpsd,
* GtkRadiant,
* Madagascar,
* Mixxx,
* MongoDB,
* Nullsoft Scriptable Install System,
* NumPy kaj SciPy,
* OpenNebula,
* OSRM,
* SuperCollider,
* VMware,
* V8 (JavaScript engine),
* Wolfenstein: Enemy Territory,
* XORP, MCA2,

## Referencoj 
Kategorio:Programado