Help us understand the problem. What is going on with this article?

SConsことはじめ

More than 3 years have passed since last update.

前準備

あらかじめ、pythonとsconsをインストールしておくこと。

基本的な知識

ここの意訳。適当。

SConstruct

SConsのエントリポイントとなるファイル。プロジェクトのルートディレクトリに配置される。
中身はpythonスクリプト。

SConscript

SConsのスクリプトであるが、プロジェクトのサブディレクトリに配置されるファイル。階層的なビルドに利用される。

Scons Environment

SConsがプロジェクトをビルドする際に作成されるオブジェクト。プロジェクトの依存関係ツリーや、ヘルパー関数、ビルダーなどをもとに作成される自身の環境。
スクリプトからは、単にEnvironmentでアクセスすることができる。

System Environment

PATHHOMEなどの、OSの環境変数を含む。スクリプトからはos.environでアクセスすることができる。

Builder

ソースファイル群から依存するターゲットをビルドするために、明示的に呼び出すオブジェクト。ソースファイルが変更されたとき、何をビルドするべきか自動的に検出する。

Action

外部コマンドを実行したり、pythonの関数を呼び出したりする、呼び出し可能なオブジェクト。Builderは、Actionのリストを保持する。

Node

通常、ファイルやディレクトリなど、ファイルシステムを表現するオブジェクト。

Scanner

ファイル内部から参照されるファイルをスキャンするのに利用されるオブジェクト。

Tool

BuilderScanner、その他ヘルパーを、SConsの環境に追加する外部コンポーネント。

最も簡単なプログラム

Hello Worldを表示させるだけの簡単なプログラム。
hello.cSConstructを作成する。

$PROJ_ROOT
├── hello.c
└── SConstruct

それぞれ、ファイルの内容は以下。

hello.c
#include <stdio.h>

int main(void) {
  printf("Hello world!\n");
  return 0;
}
SConstruct
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

ソースコード

https://github.com/toshiyukihina/hello-scons

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away