扩展Sublime Text 3构建选项

时间:2017-01-11 18:23:10

标签: makefile sublimetext3

我正在使用Sublime Text 3中的AVR包。如果我使用CMD-SHIFT-B(Build With),我可以选择Make and Make - Clean。

我想添加选项以在Make文件中执行其他部分。具体来说,我希望有一个选项Make - Avrdude来运行avrdude来编程Atmel。我可以从命令行执行此操作,但不能从Sublime执行此操作。

如何添加Build With选项?

1 个答案:

答案 0 :(得分:1)

Sublime中的构建系统是通过sublime-build文件定义的,这些文件是JSON格式的文件,告诉它如何执行构建。这些包括至少一个基本构建选项,可以包括0个或更多"变体"稍微修改一下命令。

用于调用make的构建系统称为Make.sublime-build,位于Makefile包中。查看该文件内容的最简单方法是使用PackageResourceViewer

默认情况下,它看起来像这样(从Sublime Build 3126开始):

{
    "shell_cmd": "make",
    "file_regex": "^(..[^:\n]*):([0-9]+):?([0-9]+)?:? (.*)$",
    "working_dir": "${folder:${project_path:${file_path}}}",
    "selector": "source.makefile",
    "syntax": "Packages/Makefile/Make Output.sublime-syntax",
    "keyfiles": ["Makefile", "makefile"],

    "variants":
    [
        {
            "name": "Clean",
            "shell_cmd": "make clean"
        }
    ]
}

主体提供shell_cmd以调用make以及所需的所有其他构建选项,variants部分允许您覆盖其中一些设置以执行不同的操作。您在变体中未覆盖的任何内容都使用基本设置。

为了添加额外的变体,您只需将它们添加到具有不同名称和要使用的命令的变体数组中。例如,我的变体部分如下所示:

"variants":
[
    {
        "name": "Clean",
        "shell_cmd": "make clean"
    },
    {
        "name": "Run",
        "shell_cmd": "make run"
    }
]

重要说明:文件是JSON格式的,如果格式错误(因此Sublime无法解析文件),则不会生成错误消息,并且将忽略该文件。

解决此问题的一种方法是覆盖默认文件。要使用PackageResourceViewer,请从命令面板(PackageResourceViewer: Open Resource或您平台的相关密钥)中选择Tools > Command Palette,然后选择Makefile,然后选择Make.sublime-build

这将打开文件,允许您修改它。当您保存它时,您保存的文件将覆盖内置版本,这意味着无论您现在是否正在访问构建,它都将以相同的方式工作,并且您的新选项将会出现。但是,这会掩盖构建文件的任何官方更改(例如,如果Sublime的未来版本修改此文件)。

您也可以执行与上述类似的操作,而不是保存文件,而是使用Save As并将其保存到User包中。如果你走这条路线,你需要从Tools > Build System菜单中手动选择你的构建来使用它。请注意,您为文件指定的名称控制着菜单中显示的名称,因此,如果您为其指定与默认名称相同的名称,则该菜单中将显示两次相同的名称。

第三个选项是将构建设置直接存储在sublime-project文件中(如果您正在使用),在这种情况下,自定义构建仅在该项目内部可用。在这种情况下,您仍然需要手动选择构建。