【问题标题】:Sublime Text Build System with multiple commands具有多个命令的 Sublime Text 构建系统
【发布时间】:2013-10-17 11:11:34
【问题描述】:

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

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

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

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

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

我用 sublime 做的是这样的:

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

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

有人知道我哪里出错了吗?

感谢任何帮助。我也在崇高的论坛上问过一个类似的问题,但没有人回答。我也在 Ubuntu 上并且正在使用 ST2。

【问题讨论】:

    标签: linux makefile sublimetext2 avr build-system


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • check.sh 存储在哪里?我正在尝试同样的事情,但它永远找不到脚本
    • check.sh 只是我编写的一个shell脚本,用于检查make文件是否在目录中。它很短,也不是很复杂。但那是在我的 /home/jesse/bin 文件夹中,我确定它在我的 $PATH 中。如果 make 文件不在项目目录中,它会将我用于 AVR 项目的 make 文件复制到项目目录中。
    • Ozkan 我添加了一个指向我的 git hub 页面的链接,如果您有兴趣,我在该页面中包含用于 AVR 项目的文件
    • 是的,如果您还有其他问题,请告诉我!
    【解决方案2】:

    所以我在我的机器上安装了另一个 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"
    }
    

    【讨论】:

    • 4 年多过去了,这对我很有帮助!我需要做的就是 Sublime 运行 pandoc 然后打开 PDF,直到我将 "shell":true""&;" 片段添加到我的脚本中,它才起作用。
    【解决方案3】:

    这是我的解决方案没有包装外壳脚本,针对 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"
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-21
      • 2015-03-01
      • 2013-10-14
      相关资源
      最近更新 更多