Компилятор не найден при сборке с SCons - PullRequest
0 голосов
/ 12 апреля 2020

Я пытаюсь создать файл 'file.ext' с помощью компилятора, который я назову 'comp' (расположенный в ~ / code / myComp / bin /, используя SCons в Ubuntu 18.04. Я получаю сообщение об ошибке, говорящее -

        comp file.ext -o file.out
        sh: 1: comp: not found
        scons: *** [file.out] Error 127
        scons: building terminated because of errors.

Однако, когда я копирую и вставляю точно такую ​​же строку сборки в терминал, компилятор обнаруживается, и сборка завершается без проблем. Среда SCons имеет правильное значение для системы PATH - I установить PATH в среде конструирования, явно скопировав значение во внешнюю среду с помощью os.environ ['PATH'] и передав значение в конструктор Environment.

Я создаю свою среду сборки с помощью / bin / bash и подача небольшого сценария оболочки, который определяет, где живет компилятор и т. д. c ... Мне интересно, имеет ли это какое-либо отношение к SCons, использующим / bin / sh т.е. da sh вместо / bin / bash внутренне. Любая помощь будет оценена.

1 Ответ

0 голосов
/ 30 апреля 2020

Поскольку отсутствует Минимальный воспроизводимый пример , я просто покажу вам рабочий пример и, возможно, вы сможете сравнить его с настройкой вашей среды.

Вот пример SConstruct:

import os, stat

# arbitrary location for fake compiler
f = open("/tmp/comp.sh", "w")
f.write("""echo "COMPILER COMPILING!"
cat $1 > out.ext
echo " is compiled" >> out.ext""")
f.close()

# make sure its executable
os.chmod("/tmp/comp.sh", stat.S_IRWXU) 

# fake input file
f = open("out.in", "w")
f.write("code")
f.close()

# add arbitrary path to environment
os.environ['PATH'] = os.environ['PATH'] + ":/tmp"

env = Environment(ENV = os.environ)
#env = Environment() # not setting the ENV causes sh: 1: comp.sh: not found
env.Command('out.ext', 'out.in', 'comp.sh $SOURCE')

Вот вывод, который я получаю, если я использую строку env = Environment(ENV = os.environ)

scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
comp.sh out.in
COMPILER COMPILING!
scons: done building targets.

Вот вывод, который я получаю, если я раскомментирую и использую строку env = Environment() и комментарий из предыдущей строки

scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
comp.sh out.in
sh: 1: comp.sh: not found
scons: *** [out.ext] Error 127
scons: building terminated because of errors.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...