具有多个命令的Sublime Text Build System

问题描述 投票:5回答:3

首先,我想说我是崇高文本编辑器的新手,我喜欢它。我没有使用JSON的经验,但它看起来并不困难。

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

我意识到sublime text 2只能有一个“cmd”对象,所以我尝试从终端模拟器调用一行中的所有东西,它完全符合我的预期。电话是:

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

我的脚本位于我的$ PATH环境变量的目录中,我将它传递给我正在使用的目录,因此它在那里检查makefile,如果它不在那里,它会从我保存所有目录的目录中复制它我的makefile。然后我调用make并将其命名为I,并调用该项目并安装闪存avr微控制器。

我用崇高做的是这样的:

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

这只运行bash脚本,它将makefile放在目录中但不运行make。

有谁看到我哪里出错了?

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

linux makefile sublimetext2 avr build-system
3个回答
12
投票

我发现了我的问题。这是我的bash脚本没有处理我的目录名中的空格和我没有使用shell的组合:在构建系统中核心的真实对象。那么现在有效的是:

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

}

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

(感谢来自reddit的u / Scoo_建议修复)希望这可以帮助其他人

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


0
投票

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

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

{
    "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"
}

0
投票

这是我没有包装shell脚本的解决方案,为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"
}
© www.soinside.com 2019 - 2024. All rights reserved.