SCons

SConsは、オープンソースのソフトウェアビルドツール。SConsは古典的な make ユーティリティの代替であり、さらにAutotoolsの機能とccacheのようなコンパイラキャッシュ機能を統合している。それまでのツールと比較すると、使いやすく信頼性が高い。

 概要 
 コンフィギュレーションファイルはPythonのスクリプトになっている。
 C、C++、FORTRAN のファイルの依存関係の自動分析機能が組み込まれている。make のように "make depend" や "make clean"多くの場合 "depend" や "clean" のターゲットは autotools が生成するか、ユーザーが自前で書く。make は単にそれを実行するツールである。 といったコマンドを追加しなくても全ての依存関係を得られる。他の言語やファイルタイプについては、ユーザーが依存関係スキャナを定義することで容易に拡張できる。autotoolsとは異なり、gccに組み込まれている依存関係分析機能は使っていない。代わりに、C/C++ のソースファイルに対しては "#include" をregexpスキャンする。したがってgccを使った場合、依存関係分析が遅くなるし（スキャンを余分に行っているため）、信頼性が低い（例えば、-DSOMETHING といったプリプロセッサ用フラグを無視することになるため）が、gcc以外のコンパイラでも同じ依存関係スキャンを行うという意味では移植性が高くなっている。
 C、C++、D、Java、FORTRAN、Objective-C、Yacc、Lex、Qt、SWIG を元からサポートしており、TeXとLaTeXによる文書作成もサポートしている。他の言語やファイルタイプについてもユーザー定義のビルダーでサポート可能である。
 SCCS、RCS、CVS、Subversion、BitKeeper、Perforce からソースファイルを取り出せる。
 Microsoft Visual Studio .NET および過去の Visual Studio をサポート（.dsp、.dsw、.sln、.vcproj ファイルを生成）
 MD5シグネチャを使ってファイル内容の更新を検出する。一般的なタイムスタンプによる検出もサポートしており、どちらかを選択できる。
 並列ビルドをサポートしており、ディレクトリ構成とは関係なく指定した個数のジョブを同時に実行できる。
 #include ファイル、ライブラリ、関数、typedef を探すというautoconfのような機能も組み込みでサポート。
 全依存関係のグローバルビューがあり、複数回のビルドやターゲットの並べ替えが不要。
 作成したファイルをキャッシュで共有でき、複数回のビルドが高速化できる。ccache に似ているが、C/C++ のコンパイルだけでなく、あらゆるターゲットファイルに対応している。
 クロスプラットフォームのビルド向けに設計されており、Linux、その他のPOSIXシステム（AIX、BSD系、HP-UX、IRIX、Solaris）、Windows NT系、macOS、OS/2 で動作する。

 SConstruct ファイルの例 
 Program('main.c')

ユーザーが 'scons' コマンドを実行すると、'main'（Linux）または 'main.exe'（Windows）という実行ファイルをビルドする。

 歴史と関連プロジェクト 
元々は ScCons という名称のビルドツールで、2000年8月にロスアラモス国立研究所が開催した Software Carpentry（既存のプログラミングツールを代替するソフトウェアを募集したイベント）のビルド部門で優勝した。元々は ConsCons というユーティリティをベースとして設計されていた。

Waf（英語版）はかつては "SCons/BKsys" という名称で、SCons に影響を受けてKDEコミュニティが生み出したツールである。KDE4とそれ以降のビルドにこれを使う計画があったが、CMake に移行したWhy the KDE project switched to CMake -- and how (continued) LWN.net、。

 SConsを使っている主なアプリケーション 

 The Battle for Wesnoth
 バトルフィールド1942
 Csound
 Doom 3
 FCEUX
 gem5.
 gpsd
 GtkRadiant
 Madagascar 
 Mixxx
 MongoDB
 Nullsoft Scriptable Install System
 NumPy and SciPy
 OpenNebula
 OSRM
 SuperCollider
 VMware
 Formerly V8 (JavaScript engine)
 Wolfenstein: Enemy Territory
 XORP, MCA2
 Godot

 注釈 

 脚注 

 関連項目 
 Ninja
 Buildout
 Autotools
 CMake
 Waf

 外部リンク 
  公式ウェブサイト
 Make Alternatives Freshmeat
 Stop the autoconf insanity! Why we need a new build system. Freshmeat
 Empirical Comparison of SCons and GNU Make, Ludwig Hähne, Technical University Dresden, August 21, 2008

Category:ビルド自動化
Category:Pythonでプログラムされた自由ソフトウェア
Category:オープンソースソフトウェア