m5knt

底が浅い男がなんとはなしに...

SCons チートシート

SCons SCons2.2Man

まだ編集中なりよ~

 読み方

  • ... -- 繰り返して指定可能
  • [] -- 省略可能

  • str -- ストリング: 文字列

  • nod -- ノード: 文字列, ノード
  • trg -- ターゲット: 文字列, ノード, ルール, それらのリストも可能です
  • src -- ソース: 文字列, ノード, ルール, それらのリストも可能です
  • dep -- デペンド: 文字列, ノード, ルール, それらのリストも可能です
  • act -- アクション: 文字列, 関数, それらのリストも可能です
  • rule -- ルール: 文字列, ノード, ルール
  • env -- エンバロメント: ビルド環境変数
  • key -- キー: envをマップに見立てアクセスに利用するキー文字列
    • env[key] -- ビルド環境変数の値、文字列引数中では '$key' で値を参照することも可能です
    • env['ENV'][key] -- OSの環境変数

基本ルールの定義

ほとんどのコマンドは 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,...) -- ビルドパスを返す