カスタム ビルダーの一部として、2 つのプログラムを順番に実行する必要があります。
そのうちの 1 つは、私が立ち往生していて、絶対/相対パスを処理できないプログラムであるchdir=1
ため、ビルダーのオプションを使用して、そのアクションがターゲットと同じディレクトリで実行されるようにする必要があります。
tools
2 つ目は、プロジェクトのサブディレクトリにあるスクリプトです。SConstruct ファイルはプロジェクトのルートにあります。このスクリプトを実行するアクションを作成する必要がありますが、プロジェクトへの絶対パスも、ターゲットが配置されているtools
ディレクトリからスクリプトが配置されているサブディレクトリまでの相対パスもないため、問題が発生しています。どうにかしてプロジェクトのルート ディレクトリへの絶対パスを取得できれば、準備は万端です。`tools/myscript.bar' を連結するだけで済みます。
多かれ少なかれ、私が持っているものは次のとおりです。
env['BUILDERS']['FooBar'] = Builder(action = [
'c:/bin/foo.exe ${SOURCE.filebase}',
'c:/bin/bar-interpreter.exe myscript.bar ${SOURCE.filebase}',
], chdir=1);
問題は、「myscript.bar」が見つかるように、問題のアクションを次のように変更する必要があることです。
env['BUILDERS']['FooBar'] = Builder(action = [
'c:/bin/foo.exe ${SOURCE.filebase}',
'c:/bin/bar-interpreter.exe $PATHTOHERE/tools/myscript.bar ${SOURCE.filebase}',
], chdir=1);
これはとても簡単に思えますが、方法がわかりません。