1. Qiita
  2. 投稿
  3. SublimeText

Sublime TextにBuild Systemを追加する

  • 23
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

Visual C++ 2013(cl.exe)

あらかじめ下記の場所にPATHを通して下さい
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC

vcvarsallの引数はx86で32bit、x86_amd64になります

ソースコードをUTF-8で保存する場合は必ずBOMをつけて下さい
BOMが無いと以下の様なエラーメッセージが出てビルドに失敗します
warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。

VC++.sublime-build
{
    "selector": "source.c, source.c++",
    "file_regex": "^(.*?)\\(([0-9]+),?([0-9]+)?\\) (.*)",
    "shell": true,
    "encoding": "Shift_JIS",
    "cmd": "vcvarsall x86_amd64 & cl /nologo $file_name",

    "variants":
    [
        {
            "name": "Run",
            "cmd": "vcvarsall x86_amd64 & cl /nologo $file_name & $file_base_name",
        },

        {
            "name": "Run with Terminal",
            "windows":
            {
                "cmd": ["start", "cmd", "/c", "vcvarsall x86_amd64 & cl /nologo $file_name & $file_base_name & pause"],
            }
        }
    ]
}

LLVM clang-cl

LLVM 3.5とVisual Studio Express 2013 for Windows Desktopの組み合わせで確認しています

vcvarsallの引数にx86clang-clの引数に-m32(省略可)で32bit
vcvarsallの引数にx86_amdclang-clの引数に-m64(省略可)で64bit
組み合わせがあっていないとリンク時エラーになります
コンパイラのオプションは対応していないものもあるみたいですがcl.exeとほぼ共通です

ソースファイルはcl.exeと違いUTF-8のBOM無しでもエラーになりませんが、互換性を考慮してUTF-8 with BOMでエンコードして下さい
Shift_JISの場合は、cl.exeと違い以下の様なエラーメッセージが表示されビルドに失敗します
warning: illegal character encoding in string literal

cl.exeはメッセージをShift_JISで出力しますが、clang-cl.exeはUTF-8で出力します
日本語の文字列をビルドパネルに出力しようとした場合、マルチバイト版の関数ではUTF-8で出力しますが、wprintf等ワイド版の関数ではShift_JISで表示しようとする為、[Decode error - output not UTF-8]と表示され出力結果が正しく表示されません

clang-cl.sublime-build
{
    "selector": "source.c, source.c++",
    "file_regex": "^(.*?)\\(([0-9]+),?([0-9]+)?\\) (.*)",
    "shell": true,
    "cmd": "vcvarsall x86_amd64 & clang-cl -m64 $file_name",

    "variants":
    [
        {
            "name": "Run",
            "cmd": "vcvarsall x86_amd64 & clang-cl -m64 $file_name & $file_base_name",
        },

        {
            "name": "Run with Terminal",
            "windows":
            {
                "cmd": ["start", "cmd", "/c", "vcvarsall x86_amd64 & clang-cl -m64 $file_name & $file_base_name & pause"],
            }
        }
    ]
}

gcc

Mingw-w64にて確認

gcc.sublime-build
{
    "selector": "source.c, source.c++",
    "file_regex": "^(.*?):([0-9]*):?([0-9]*):? (.*)",
    "cmd": ["gcc", "-std=c99", "-municode", "$file_name", "-o", "$file_base_name"],

    "variants":
    [
        {
            "name": "Run",
            "shell": true,
            "encoding": "Shift_JIS",
            "cmd": "gcc -std=c99 -municode $file_name -o $file_base_name & $file_base_name",
        },

        {
            "name": "Run with Terminal",
            "shell": true,
            "windows":
            {
                "cmd": ["start", "cmd", "/c", "gcc -std=c99 -municode $file_name -o $file_base_name & $file_base_name & pause"],
            }
        }
    ]
}

C#

csc.exeのある場所へあらかじめPATHを通して下さい。
Visual C++と違って「Visual Studio Tools」内の開発者コマンドプロンプトからSublime Textを実行する手順は必要はありません。

csc.sublime-build
{
    "selector": "source.cs",
    "file_regex": "^(.*?)\\(([0-9]+),?([0-9]+)?\\)(.*)",

    "windows":
    {
        "encoding": "Shift_JIS",
        "cmd": ["csc", "/nologo", "$file_name"],
    },

    "variants":
    [
        {
            "name": "Run",
            "shell": true,
            "windows":
            {
                "encoding": "Shift_JIS",
                "cmd": "csc /nologo $file_name & $file_base_name",
            }
        },

        {
            "name": "Run with Terminal",
            "shell": true,
            "windows":
            {
                "cmd": ["start", "cmd", "/c", "csc /nologo $file_name & $file_base_name & pause"],
            }
        }
    ]
}

Go言語

go1.3.3.Windows-amd64にて確認

ファイルのフルパスに日本語が含まれていると、エラーメッセージが文字化けして該当箇所にジャンプ出来ません。

go.sublime-build
{
    "selector": "source.go",
    "file_regex": "^(.*?):([0-9]*):?([0-9]*):?(.*)",
    "cmd": ["go", "build", "$file_name"],

    "variants":
    [
        {
            "name": "Run",
            "cmd": ["go", "run", "$file_name"],
        },

        {
            "name": "Run with Terminal",
            "shell": true,
            "windows":
            {
                "cmd": ["start", "cmd", "/c", "go run $file_name & pause"],
            }
        }
    ]
}

D言語

2015/12/20更新
DMD32 D Compiler v2.069.2にて確認

dmd.sublime-build
{
    "selector": "source.d",
    "file_regex": "((^(?!.*@)|(?<=@)).*)\\(([0-9]+),?([0-9]+)?\\):\\s(.*)$",
    "cmd": ["dmd", "-m64", "$file_name"],

    "variants":
    [
        {
            "name": "Run",
            "shell": true,
            "cmd": "dmd -m64 $file_name & $file_base_name",
        },

        {
            "name": "Run with Terminal",
            "shell": true,
            "windows":
            {
                "cmd": ["start", "cmd", "/c", "chcp 65001 & dmd -m64 $file_name & $file_base_name & pause"],
            }
        }
    ]
}

2015/12/20更新
DMD32 D Compiler v2.069.2 + DUB 0.9.24にて確認
SDLangパッケージ

dub.sublime-build
{
    "selector": "source.sdl, source.json",
    "file_regex": "((^(?!.*@)|(?<=@)).*)\\(([0-9]+),?([0-9]+)?\\):\\s(.*)$",
    "cmd": ["dub", "build", "--arch=x86_64"],

    "variants": [
        {
            "cmd": ["dub", "run", "--arch=x86_64"],
            "name": "Run"
        },

        {
            "name": "Run with Terminal",
            "shell": true,
            "windows":
            {
                "cmd": ["start", "cmd", "/c", "chcp 65001 & dub run --arch=x86_64 & pause"],
            }
        }
    ]
}

Free Pascal

32bitでビルドする場合は-Px86_64オプションを外す
ソースコードはUTF-8(BOM無し)で、コンパイラ指令に{$CODEPAGE UTF8}を追加する

fpc.sublime-build
{
    "selector": "source.pascal",
    "file_regex": "^(.*?)\\(([0-9]+),?([0-9]+)?\\)(.*)",
    "cmd": ["fpc", "-Px86_64", "-l-", "-vi-wn-", "$file_name"],

    "windows":
    {
        "encoding": "Shift_JIS",
    },

    "variants":
    [
        {
            "name": "Run",
            "encoding": "Shift_JIS",
            "shell": true,
            "windows":
            {
                "cmd": "fpc -Px86_64 -l- -vi-wn- $file_name & $file_base_name",
            },
        },

        {
            "name": "Run with Terminal",
            "shell": true,
            "windows":
            {
                "cmd": ["start", "cmd", "/c", "fpc -Px86_64 -l- -vi-wn- $file_name & $file_base_name & pause"]
            }
        }
    ]
}

Rust

Rust 0.13.0-nightly Windows 64-bitにて確認

Rust.sublime-build
{
    "selector": "source.rust",
    "file_regex": "^(.*?):([0-9]+):([0-9]+):\\s[0-9]+:[0-9]+\\s(.*)",
    "cmd": ["rustc", "$file_name"],

    "variants":
    [
        {
            "name": "Run",
            "shell": true,
            "cmd": "rustc $file_name & $file_base_name",
        },

        {
            "name": "Run with Terminal",
            "shell": true,
            "windows":
            {
                "cmd": ["start", "cmd", "/c", "rustc $file_name & $file_base_name & pause"],
            }
        }
    ]
}

cargo 0.0.1-pre-nightlyにて確認
使用する時はCargo.tomlを開いた後、ビルドシステムを手動で変更する必要があります。
cargo以外にTOMLを使用したビルドツールが無い場合、ビルドシステムを自動にしたい時は
TOMLパッケージがインストールされた状態で、"selector": "source.toml",を追加

cargo.sublime-build
{
    "file_regex": "^(.*?):([0-9]+):([0-9]+):\\s[0-9]+:[0-9]+\\s(.*)$",
    "syntax": "Packages/Makefile/Make.build-language",
    "cmd": ["cargo", "build"],

    "variants": [
        {
            "cmd": ["cargo", "run"],
            "name": "Run"
        },

        {
            "name": "Run with Terminal",
            "shell": true,
            "windows":
            {
                "cmd": ["start", "cmd", "/c", "cargo run & pause"]
            }
        }
    ]
}

OCaml

OCPWinにて確認

OCaml.sublime-build
{
    "selector": "source.ocaml",
    "file_regex": "File \"(.*?)\", line ([0-9]+), characters [0-9]+-([0-9]+):(.*)",
    "cmd": ["ocamlopt", "-o", "$file_base_name", "$file_name"],

    "variants":
    [
        {
            "name": "Run",
            "windows":
            {
                "encoding": "Shift_JIS",
                "cmd": ["ocaml", "$file_name"],
            }
        },

        {
            "name": "Run with Terminal",
            "shell": true,
            "windows":
            {
                "cmd": ["start", "cmd", "/c", "ocaml $file_name & pause"],
            }
        }
    ]
}

Java

jdk-8u25-windows-x64にて確認

java.sublime-build
{
    "selector": "source.java",
    "file_regex": "^(.*?):([0-9]*):?([0-9]*):? (.*)",
    "cmd": ["javac", "-encoding", "utf-8", "$file_name"],

    "windows":
    {
        "encoding": "Shift_JIS",
    },

    "variants":
    [
        {
            "name": "Run",
            "shell": true,
            "windows":
            {
                "encoding": "Shift_JIS",
                "cmd": "javac -encoding utf-8 $file_name & java $file_base_name",
            }
        },

        {
            "name": "Run with Terminal",
            "shell": true,
            "windows":
            {
                "cmd": ["start", "cmd", "/c", "javac -encoding utf-8 $file_name & java $file_base_name & pause"],
            }
        }
    ]
}

Python

Python 3.4.2にて確認

Python.sublime-build
{
    "selector": "source.python",
    "file_regex": "^[ ]*File \"(.*?)\", line ([0-9]*)",
    "cmd": ["python", "$file_name"],

    "windows":
    {
        "encoding": "Shift_JIS",
    },

    "variants":
    [
        {
            "name": "Run",
            "windows":
            {
                "shell": true,
                "cmd": ["start", "cmd", "/c", "python $file_name & pause"],
            }
        }
    ]
}

Ruby

RubyInstaller for Windows 2.14にて確認。

Ruby.sublime-build
{
    "selector": "source.ruby",
    "file_regex": "^(.*?):([0-9]*):?([0-9]*):? (.*)",
    "cmd": ["ruby", "$file_name"],

    "windows":
    {
        "encoding": "Shift_JIS",
    },

    "variants":
    [
        {
            "name": "Run",
            "shell": true,
            "windows":
            {
                "cmd": ["start", "cmd", "/c", "ruby $file_name & pause"],
            }
        }
    ]
}

lua

LuaBinaries:Lua 5.2.3 - Release 1にて確認

lua.sublime-build
{
    "selector": "source.lua",
    "file_regex": "lua52: (.*?):([0-9]+):?([0-9]+)? s(.*)",
    "cmd": ["lua52", "$file_name"],

    "variants":
    [
        {
            "name": "Run",
            "shell": true,
            "windows":
            {
                "cmd": ["start", "cmd", "/c", "chcp 65001 lua52 $file_name"],
            }
        }
    ]
}