Система сборки 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

Чтобы найти, где находится ваша команда, а затем включить весь ваш путь.

Другие вопросы по тегам