SCons チートシート
まだ編集中なりよ~
読み方
- ... -- 繰り返して指定可能
[] -- 省略可能
str -- ストリング: 文字列
- nod -- ノード: 文字列, ノード
- trg -- ターゲット: 文字列, ノード, ルール, それらのリストも可能です
- src -- ソース: 文字列, ノード, ルール, それらのリストも可能です
- dep -- デペンド: 文字列, ノード, ルール, それらのリストも可能です
- act -- アクション: 文字列, 関数, それらのリストも可能です
- rule -- ルール: 文字列, ノード, ルール
- env -- エンバロメント: ビルド環境変数
- key -- キー: envをマップに見立てアクセスに利用するキー文字列
基本ルールの定義
ほとんどのコマンドは key=val を指定することで一時的に値を置き換えることが出来ます,指定することが重要な項目だけに表記します
- env = Environment([platform, tools, key=val]) -- ビルド環境変数を返します
- rule = env.Command(trg, src, act) ... ルールを定義します
- env.Depends(rule, dep) -- 依存関係を足します
- env.Ignore(rule, dep) -- 依存関係を外します
ルールの振る舞い
- env.Default(rule,...) -- デフォルト実行するルールを指定します
- env.AlwaysBuild(rule,...) -- 常に実行するルールを指定します
- env.Alias(str, [rule, [act]]) -- ルールの別名を定義します
クリーン時の振る舞い
- env.Clean(rule, rule2) -- クリーン時に同調するルール等を指定します
- env.NoClean(rule,...) -- クリーン時に除外するルールを指定します
リビルド時の振る舞い
- env.Precious(rule,...)
定義済みアクション
- env.Chmod(trg, mod) -- アクセス権限を指定します mod でファイル属性を指定します
- env.Copy(trg, src) -- コピーします
- env.Delete(trg) -- 削除します
- env.Mkdir(trg) -- ディレクトリを作成します
- env.Move(trg, src) -- 移動もしくはリネームします
- env.Touch(trg) -- 空を作成もしくは最新の日付にします
変数操作
- env = Environment([platform, tools, key=val]) -- ビルド環境変数を返します
- env2 = env.Clone([key=val]) -- ビルド環境変数複製します
- env.SetDefault(key=val,...) -- 変数のデフォルト値を設定します
- env.Replace(key=val,...) -- 変数に値を代入します
- env.Append(key=val,...) -- リスト変数の後ろに値を連結します
- env.Prepend(key=val,...) -- リスト変数の前に値を連結します
- env.AppendUnique(key=val,...) -- リスト変数の後ろに値を連結します(重複しない)
- env.PrependUnique(key=val,...) -- リスト変数の前に値を連結します(重複しない)
- env.AppendENVPath(key, val) -- パスリスト環境変数の後ろにパスリスト値を連結します
- env.PrependENVPath(key, val) -- パスリスト環境変数の前にパスリスト値を連結します
ファイルノード周り
- list = env.Glob(pat,???) -- グロブで得られたノードを返す
- nod = env.File(name,[dir]) -- ファイルのノードを返す
- nod = env.Dir(name,[dir]) -- ディレクトリのノードを返す
その他操作
- str = WhereIs(name,[path, pathext, reject]) -- 実行ファイルを path から探しフルパス名を返す
- list = Split(str) -- 単語のリストを返す
- list = Flatten(list) -- 多次元リストを一次元リストにする
バイナリルール関連
- rule = env.Object(trg, src) -- see env.StaticObject()
- rule = env.Library(trg, src) -- see env.StaticLibrary()
- rule = env.StaticObject(trg, src) -- オブジェクト作成ルールを定義します
- rule = env.SharedObject(trg, src) -- picオブジェクト作成ルールを定義します
- rule = env.StaticLibrary(trg, src) -- スタティックリンクライブラリ作成ルールを定義します
- rule = env.SharedLibrary(trg, src) -- ダイナミックリンクライブラリ作成ルールを定義します
- rule = env.LoadableModule(trg, src) -- macはローダブルbundle作成ルールを定義,します 他は see env.SharedLibrary()
- rule = env.Program(trg, src) -- 実行ファイル作成ルールを定義します
パッケージルール関連
- env.Install(trg, src) -- ターゲット位置へインストール
- env.InstallAs(trg, src) -- 名前を変えてターゲット位置へインストール
- env.Package() ... パッケージファイルビルド
高度なアクション定義
- env.AddPostAction(rule, act) -- アクションを後ろに足します
- env.AddPreAction(rule, act) -- アクションを前に足します
- act = env.Action(func, [str_info]) -- ルール定義に利用するアクションを定義する str_info はコンソール出力文字列を指定します
def func(trg, src, env): # 関数定義例
~build script~
return errcode
- env.Execute(act,[strfn,var]) -- アクション実行する
サブスクリプト関係
- Export(str) -- 下流へ公開する python 変数を指定します
- env.SConscriptChdir(n) -- SConscript 実行時にディレクトリを変更するか0,1で指定します
- env.SConscript(scons,[exports,variant_dir, duplicate]) -- サブスクリプト呼び出し duplicate 0,1 でソースを複製するか指定します
- Import(str) -- 利用する上流の python 変数を指定します
- Return(str,[stop=]) -- 上流へ渡す python 変数を指定し処理を戻します, stop= を指定すると処理をとめます
- env.Exit([val]) -- scons を終了させる
キャッシュ周り
- env.CacheDir(dir) -- ビルドキャッシュの保存先を指定します
- env.NoCache(rule,...) -- キャッシュさせないルールを指定します
細かなビルド設定周り
- str = env.GetLaunchDir() -- scons 実行ディレクトリをフルパスで返す
- env.SConsignFile([file, py-dbm]) -- ビルド情報を保存するファイルを指定
- env.SourceSignatures(str) -- ファイル更新判定種別 'MD5' もしくは 'timestamp' を指定します
- env.TargetSignatures(str) -- ファイル更新判定種別 'MD5' もしくは 'timestamp' を指定します
- env.VariantDir(vardir, srcdir, [duplicate]) -- ディレクトを転写してルールを処理をします duplicate 0,1 でソースを複製するか指定します
- env.BuildDir(vardir, srcdir, [duplicate]) -- 同上
- env.Dump([key]) -- 内部変数定義を文字列として返す
コマンドライン周り
- env.AddOption(...) -- コマンドラインオプションを定義する
- env.SetOption(str, val) -- コマンドラインオプション値を設定する
- env.GetOption(str) -- コマンドラインオプション値を取得する
- env.Help(str) -- ヘルプ表示用文字列指定
あとで書く
Platform Tool SideEffect SourceCode subst Tag Value AddMethod() Literal Local MergeFlags ParseConfig ParseDepends ParseFlags Progress() Repository Builder() Configure() Decider() DefaultEnvironment() Dictionary() EnsurePythonVersion FindFile FindInstalledFiles FindPathDirs FindSourceFiles GetBuildFailures * str = env.GetBuildPath(rule,...) -- ビルドパスを返す