3

Python スクリプトを介してプッシュされた後、ビルド ディレクトリに送信したいファイルがあります。wafでこれを行うにはどうすればよいですか?

たとえば、次のようなファイルがあるとします。

VERSION=%%VERSION%%
DATADIR=%%DATADIR%%

waf ビルド ディレクトリに出力する前に %%VERSION%% と %%DATADIR%% を置き換えたいのですが、どうすればよいですか?

私はそれが次のようなものであることを知っています:

ctx(rule='???'
 source='versionfile.ver', 
 target='versionfile.out'
)

しかし、ルールがどうなるかはわかりません。

また、そのファイルが生成されたら、他のタスクで使用することは可能ですか?

4

1 に答える 1

4

単純に入力ファイルを置き換えたい場合、versionfile.ver は次のようになります。

VERSION=@VERSION@
DATADIR=@DATADIR@

これで、次のタスクを使用できるようになり、値が置換されます

bld.new_task_gen (
  features = "subst",
  source= "versionfile.ver",
  target= "versionfile.out",
  VERSION = bld.env['VERSION'],
  DATADIR = bld.env['DATADIR'])

bld からバージョンにアクセスできるようにするには、configure 中に定義する必要があります

conf.env['VERSION'] = '0.7.0'

この waf タスクの動作はこちらで確認できます。このタスクの出力ファイルは、他のタスクの入力として使用できます。

ただし、Python スクリプトまたは使用可能なコマンドを介してソース ファイルを渡したい場合は、次のように使用できます。

lib_typelib = bld.new_task_gen(
  name = 'versionfile',
  source = 'versionfile.ver',
  target = 'versionfile.out',
  rule='/path/to/your/python/script ${SRC} -o ${TGT}')

ここで利用可能なサンプルもあります。この場合、g-ir-compiler が使用され、あなたの場合は python スクリプトになります。

于 2011-12-08T15:24:35.543 に答える