用于 Sublime Text 3 的 Verilog 构建系统

Verilog Build System for Sublime Text 3

我正在尝试在 Sublime Text 中为 Verilog 实现一个简单的构建系统,但是在构建时出现以下错误:

[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

当我 运行 来自 shell 的命令时,我没有遇到任何问题,而且它完全符合我的预期。

我的 Verilog.sublime-build 构建系统使用以下 JSON:

{
    "cmd": ["iverilog", "-o", "iverilog/compiled", "$file"],
    "selector": "source.v"
} 

如果有人可以让我深入了解我在这里可能做错了什么,我将不胜感激。如果它有什么不同,我 运行ning 来自 OS X,并使用 Sublime Text 3。

经过更多的实验,我最终弄明白了这一点。原来我需要的是

{
    "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 命令在完整的 shell 环境中也不是 运行 可以访问用户的路径变量,所以很多内置程序,尤其是可以直接从 shell 调用的已安装程序,如果不直接获取,将无法在那里工作。

如果以后有人在他们的构建中遇到类似的错误,我的建议是使用:

which command_name

找到你的命令所在的位置,然后包括你的整个路径。