前準備
あらかじめ、pythonとsconsをインストールしておくこと。
基本的な知識
ここの意訳。適当。
SConstruct
SConsのエントリポイントとなるファイル。プロジェクトのルートディレクトリに配置される。
中身はpythonスクリプト。
SConscript
SConsのスクリプトであるが、プロジェクトのサブディレクトリに配置されるファイル。階層的なビルドに利用される。
Scons Environment
SConsがプロジェクトをビルドする際に作成されるオブジェクト。プロジェクトの依存関係ツリーや、ヘルパー関数、ビルダーなどをもとに作成される自身の環境。
スクリプトからは、単にEnvironment
でアクセスすることができる。
System Environment
PATH
やHOME
などの、OSの環境変数を含む。スクリプトからはos.environ
でアクセスすることができる。
Builder
ソースファイル群から依存するターゲットをビルドするために、明示的に呼び出すオブジェクト。ソースファイルが変更されたとき、何をビルドするべきか自動的に検出する。
Action
外部コマンドを実行したり、pythonの関数を呼び出したりする、呼び出し可能なオブジェクト。Builder
は、Action
のリストを保持する。
Node
通常、ファイルやディレクトリなど、ファイルシステムを表現するオブジェクト。
Scanner
ファイル内部から参照されるファイルをスキャンするのに利用されるオブジェクト。
Tool
Builder
やScanner
、その他ヘルパーを、SConsの環境に追加する外部コンポーネント。
最も簡単なプログラム
Hello World
を表示させるだけの簡単なプログラム。
hello.c
とSConstruct
を作成する。
$PROJ_ROOT
├── hello.c
└── SConstruct
それぞれ、ファイルの内容は以下。
#include <stdio.h>
int main(void) {
printf("Hello world!\n");
return 0;
}
env = Environment()
env.Program(target='hello', source=["hello.c"])
$PROJ_ROOT
で、以下のコマンドでビルドしてみる。
$ scons
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
gcc -o hello.o -c hello.c
gcc -o hello hello.o
scons: done building targets.
ビルドが成功すると、hello
が生成される。
$PROJ_ROOT
├── hello <= (*)
├── hello.c
├── hello.o
└── SConstruct
実行してみる。
$ ./hello
Hello world!
ビルドで生成されたファイルは、以下のコマンドでクリーンできる。
$ scons -c
ソースコード