5

首先,我想说我是 sublime 文本编辑器的新手,我喜欢它。我没有使用 JSON 的经验,但它似乎一点也不难。

我正在尝试编写一个构建系统,该系统将调用一个 bash 脚本,该脚本将一个 makefile 移动到我正在工作的目录中并调用该 makefile,它将使用 avr-gcc 编译我的 c 代码,然后将其闪存到连接的微控制器使用艾尔杜德。

我意识到 sublime text 2 只能有一个“cmd”对象,所以我尝试从终端模拟器调用一行中的所有内容,它完全按照我的意图工作。电话是:

checkAVRmakefile.sh $PWD; make PROJECTNAME+=hello install

我的脚本在我的 $PATH 环境变量的一个目录中,我将它传递给我正在使用的目录,因此它在那里检查生成文件,如果它不存在,它会从我保存所有文件的目录中复制它我的makefile。然后我调用 make 并将名称与要调用的项目一起传递给它,然后安装会闪烁 avr 微控制器。

我用崇高做的是:

{
"shell":true,
"cmd":[ "checkAVRmakefile.sh", "$file_path", ";" ,"make","PROJECTNAME+=$file_base_name","install"],
}

这仅运行将 makefile 放入目录但不运行 make 的 bash 脚本。

有谁看到我哪里出错了?

任何帮助表示赞赏。我也在崇高的论坛上问过一个类似的问题,但没有人回答。我也在 Ubuntu 上使用 ST2。

4

3 回答 3

13

我发现我的问题是什么。这是我的 bash 脚本没有处理我的目录名称中的空格和我没有在构建系统中正确使用 shell:true 对象的组合。所以现在有效的是:

{
   "shell":true,
   "cmd":["check.sh $file_path && make PROJECTNAME+=$file_base_name install"]

}

似乎对于 shell:true 对象,我不需要 cmd 列表中的每个输入都用引号引起来,只需要一个长字符串。

(感谢 reddit 的 u/Scoo_ 提出修复建议)希望这对其他人有所帮助

编辑(17-3-2014):我已将用于构建 AVR 项目的文件上传到我的 git 集线器: https ://github.com/Jesse-Millwood/AVR-Stuffs.git

于 2013-10-13T14:23:13.727 回答
1

所以我在我的机器上安装了另一个 Python 安装,我需要它用于各种目的,我需要在我的终端中运行 .bat 或 .cmd 来设置我的环境变量,然后才能使用那种 Python 风格。这需要完成,否则它会从我的默认 c:\Python27 python 安装中导入其他同名模块。我在互联网上挖了一下,当我点击 ctrl+B(构建)时,我能够想出让它从 Sublime Text 2 运行。

我希望有人觉得这很有用。这是一个自定义构建文件,使用我的其他风格用完了 Sublime。您可以通过选择工具>构建系统>新构建系统在 Sublime 中创建一个新的构建文件,并将其与您需要的任何模块一起粘贴到其中。

{
    "shell":true,
    "cmd": ["C:\\GIT\\Folder1\\Folder1\\thebatch.cmd", "&;",
        "python", "-u", "$file"],
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "working_dir": "C:\\GIT\\GBmapper\\AWSInterfaces\\DEM_Processing"
}
于 2015-08-06T14:12:13.117 回答
0

这是我没有包装外壳脚本的解决方案,针对 MacOS 进行了测试:

{
    "cmd": ["sh","-c","nasm -f bin -o '${file_base_name}' '${file}';chmod +x '${file_base_name}'"],
    "file_regex": "^(.+):([0-9]+)()?: error: (.*)$",
    "working_dir": "${file_path}",
    "selector": "source.assembly"
}
于 2019-04-30T08:43:52.333 回答