Мне нужно запустить две программы последовательно как часть пользовательского компоновщика.
Одна из них - это программа, с которой я застрял и не могу работать с абсолютными / относительными путями, поэтому мне нужно использовать опцию chdir=1
в Builder, чтобы ее действия выполнялись в том же каталоге, что и цель .
Второй - это скрипт, который находится в подкаталоге tools
проекта; файл 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);
Это кажется таким простым, но я не могу понять, как.