SCons入門(3)
SCons入門(1) - Pashango’s Blog
SCons入門(2) - Pashango’s Blog
ファイル/ディレクトリ操作「Copy,Move,Delete,Touch,Mkdir,Chmod」
SConsではファイル/ディレクトリ操作用に以下の関数が用意されている。
Copy(dst, src) | ファイル/ディレクトリのコピー |
---|---|
Move(dst, src) | ファイル/ディレクトリの移動 |
Delete(tgt) | ファイル/ディレクトリの削除 |
Touch(tgt) | タイムスタンプの更新 |
Mkdir(tgt) | ディレクトリの作成 |
Chmod(tgt, prm) | パーミッションの変更 |
これらの関数は単独では使用できない、Commandなどのアクション部分に組み込んで初めて動作する。
SConstructのサンプルは以下のとおり。
Command("file.out", "file.in", [ Mkdir("tmpdir"), Copy("tmpdir/main.c", "main.c"), "mycommand $SOURCE $TARGET", Move("$TARGET", "tmpdir/$TARGET"), Delete("tmpdir"), Touch("$TARGET"), Chmod("$TARGET", 0755), ])
実行結果は以下のとおり、テンポラリデイレクトリの生成/削除を行い、最後にパーミッションを変更している。
>scons scons: Reading SConscript files ... scons: done reading SConscript files. scons: Building targets ... Mkdir("tmpdir") Copy("tmpdir/foo.in", "foo.in") mycommad foo.in foo.out Move("foo.out", "tmpdir/foo.out") Delete("tmpdir") Touch("foo.out") Chmod("foo.out", 0755) scons: done building targets.