Система сборки Verilog для возвышенного текста 3
Я пытаюсь реализовать простую систему сборки Verilog в Sublime Text, но я получаю следующую ошибку при сборке:
[Errno 2] No such file or directory: 'iverilog'
[cmd: ['iverilog', '-o', 'iverilog/compiled', '/Users/ryanbeltran/Documents/Programming/Verilog/testing/test.v']]
[dir: /Users/ryanbeltran/Documents/Programming/Verilog/testing]
[path: /usr/bin:/bin:/usr/sbin:/sbin]
[Finished]
Предполагается, что моя система сборки использует компилятор Icarus Verilog, команда которого:
iverilog -o outputfile inputfile.v
Когда я запускаю эту команду из оболочки, у меня нет проблем, и она работает именно так, как я намереваюсь.
мой Verilog.sublime-build
Система сборки использует следующий JSON:
{
"cmd": ["iverilog", "-o", "iverilog/compiled", "$file"],
"selector": "source.v"
}
Если бы кто-нибудь мог предложить мне хоть какое-то понимание того, что я могу здесь делать, я был бы очень признателен. Если это имеет какое-то значение, я работаю с OS X и использую Sublime Text 3.
1 ответ
Я решил выяснить это после еще нескольких экспериментов. Оказывается, мне нужно было
{
"shell":true,
"cmd": [ "mkdir -pv $file_path/iverilog_compiled && touch $file_path/iverilog_compiled/$file_base_name && /usr/local/bin/iverilog -o $file_path/iverilog_compiled/$file_base_name $file && /usr/local/bin/vvp $file_path/iverilog_compiled/$file_base_name"],
"selector": "source.v"
}
Ну, это также работает, и поэтому более минимальный подход может оставить за финал && /usr/local/bin/vvp $file_path/iverilog_compiled/$file_base_name
, но это не главное.
Вывод здесь, что даже с shell
установить в true, cmd
Команда не выполняется в полной среде оболочки с доступом к переменным пути пользователя, и поэтому многие встроенные и особенно установленные программы, которые вы можете вызывать непосредственно из оболочки, не будут работать там без непосредственного доступа к ним.
Если в будущем кто-нибудь получит аналогичную ошибку при сборке, я рекомендую использовать:
which command_name
Чтобы найти, где находится ваша команда, а затем включить весь ваш путь.