読者です 読者をやめる 読者になる 読者になる

SublimeLinterでたのしいC/C++

2016.05.04追記:おそらく古すぎて使えません

覚書

目的

SublimeTextで,C++のSyntax Errorコンパイルせずに見つけたかった(AOJのため)ので,SublimeLinter-contrib-clangを,Windows7(64bit)上で使えるようにした.

手順1

http://elfcobe.hateblo.jp/entry/2014/02/01/001214
ここを見てMinGWllvm/clangとMSYSを導入する.
まだこの段階ではclangでコンパイルすることはできない*1

手順2

Clangはインクルードファイルをフルで持っているわけではないっぽいので,gccのものを使う
1.gccとg++で適当な.cファイルを -v を付けてコンパイルする.

$ gcc -v test.c
(中略)
#include "..." search starts here:
#include "..." search starts here:
 c:\mingw64\bin..\lib\gcc\x86_64-w64-mingw32\4.8.1\include\c++\x86_64-w64-mingw32
(中略)
End of search list
(略)

g++でも同じことを行う.

2.これらをCPATHに設定する.~/.bashrcに,

CPATH="/c/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.8.1/include/c++"
CPATH="/c/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.8.1/include/c++/x86_64-w64-mingw32":$CPATH
CPATH="/c/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.8.1/include/backward":$CPATH
CPATH="/c/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.8.1/include":$CPATH
CPATH="/c/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.8.1/include-fixed":$CPATH
CPATH="/c/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.8.1/../../../../x86_64-w64-mingw32/include":$CPATH

export CPATH

のように追記する.
この段階でMSYSを通じてclangでコンパイルが可能になる.ただしC++はclang++を使用する.

手順3

SublimeTextのPackageControlで「SublimeLinter」と「SublimeLinter-contrib-clang」をインストールする.

手順4

1. SublimeTextの「Preferences」→「Package Settings」→「SublimeLinter」→「Settings-User」をクリックし,以下のように記述する

{
    "user": {
        "debug": true,
        "delay": 0.25,
        "error_color": "D02000",
        "gutter_theme": "Packages/SublimeLinter/gutter-themes/Default/Default.gutter-theme",
        "gutter_theme_excludes": [],
        "lint_mode": "background",
        "linters": {
            "clang": {
                "@disable": false,
                "args": [],
                "excludes": [],
                "extra_flags": "",
                "include_dirs": [
                //  .bashrcに書いたパス
                ]
            }
        },
        "mark_style": "outline",
        "no_column_highlights_line": false,
        "passive_warnings": false,
        "paths": {
            "linux": [],
            "osx": [],
            "windows": []
        },
        "python_paths": {
            "linux": [],
            "osx": [],
            "windows": []
        },
        "rc_search_limit": 3,
        "shell_timeout": 10,
        "show_errors_on_save": false,
        "show_marks_in_minimap": true,
        "syntax_map": {
            "html (django)": "html",
            "html (rails)": "html",
            "html 5": "html",
            "php": "html",
            "python django": "python"
        },
        "warning_color": "DDB700",
        "wrap_find": true
    }
}

たぶん"python_paths"はいらない.

2. SublimeTextを再起動

終了

困ったときはLinterをデバッグモードにして動かしてみると良い.
その際には,さっきのユーザー設定を開いて,

"linters": {
            "clang": {
                "@disable": false,
                "args": [],
                "excludes": [],
                "extra_flags": "",
                "include_dirs": []
            }
        }

ここの"extra_frags"に"-v"を入れて,SublimeTextのコンソールを開くと,どこでエラーを吐いてるかわかる.

感想

Clangがまだあまり広まってないというか浸透しきっていないような感じ*2だったので,情報を探すのが大変だった.



しかし非常に便利なので対価としてかなり有益だったと思う.

あと"Clang"なのか"clang"なのかわからん.

*1:マシンの状態によるかもしれない

*2:主観