Potrzebuję uruchomić dwa programy w sekwencji jako część niestandardowego konstruktora.uzyskiwanie katalogu głównego scons
Jednym z nich jest program, w którym utknąłem i nie mogę sobie radzić z bezwzględnymi/względnymi ścieżkami, więc muszę użyć opcji chdir=1
Buildera, aby jego akcje działały w tym samym katalogu co cel.
Drugi to skrypt, który znajduje się w podkatalogu projektu tools
; plik SConstruct znajduje się w katalogu głównym projektu. Potrzebuję utworzyć akcję, aby uruchomić ten skrypt, i mam problem, ponieważ nie mam ani absolutnej ścieżki do projektu, ani ścieżki względnej z katalogu, w którym znajduje się obiekt docelowy, z powrotem do podkatalogu tools
, w którym znajduje się skrypt . Gdybym mógł w jakiś sposób uzyskać absolutną ścieżkę do katalogu głównego mojego projektu, byłbym kompletny, mógłbym po prostu połączyć `tools/myscript.bar 'i zrobić z nim.
Oto co mam, bardziej lub mniej:
env['BUILDERS']['FooBar'] = Builder(action = [
'c:/bin/foo.exe ${SOURCE.filebase}',
'c:/bin/bar-interpreter.exe myscript.bar ${SOURCE.filebase}',
], chdir=1);
Problemem jest to, że muszę zmienić działanie w kwestii tak, że „myscript.bar” można znaleźć coś takiego:
env['BUILDERS']['FooBar'] = Builder(action = [
'c:/bin/foo.exe ${SOURCE.filebase}',
'c:/bin/bar-interpreter.exe $PATHTOHERE/tools/myscript.bar ${SOURCE.filebase}',
], chdir=1);
Wydaje się to takie proste, ale nie wiem, jak to zrobić.