SublimeLinter-contrib-clangが上手くいかなくなった。
概要
今まで使えていたSublimeLinter-clangが使えなくなった。おそらく原因はyosemiteにアップデートしたからだと思う。根本的な解決はできてないが応急処置は出来たからメモしておく。詳しい人おしえてください。
症状
今まで使えていたのに、久しぶりに開くとヘッダーファイルが見つからないと言われる。
terminalからgccやclangでコンパイルは出来る。
さらに、友人に聞いてみると自分のmacだとyosemiteでも問題なく動くらしい。
なぜ!!
原因模索
とりあえず、sublimelinterをデバッグモードにしてみる。
(コマンドパレットからSublimelinter:Enable Debug Modeから出来る)
コンソールで以下のオプションでlinterが実行していることが分かる。
terminalから同じオプションで実行してみると同じエラーが出た。
オプションを削ってやってみると、
# % clang -cc1 test.c
test.c:1:10: fatal error: 'stdio.h' file not found
#include "stdio.h"
^
1 error generated.
なので-cc1
オプションが問題なのでは無いかと思う。
解決策模索
まず-cc1
オプションに関する資料を探してみたが見つからなかった。(探し方が悪いのか...)
次にpackage>SublimeLinter-contrib-clang>linter.pyに書いてある実行ファイルを変更してみる。
base_cmd = (
'clang -cc1 -fsyntax-only '
'-fno-caret-diagnostics -fcxx-exceptions -Wall '
)
となっているところを
base_cmd = (
'clang -fsyntax-only '
'-fno-caret-diagnostics -fcxx-exceptions -Wall '
)
としてみる。
そうするとsublimeLinter自体動いかなくなったorz
応急処置
結局includeディレクトリの場所が上手くいってないってことなんでしょ(キレ気味)
てことでSublimeLinterのinclude_dirsに明示してみるとうまくいった。
SublimeLinter.sublime-settings-Usersで
"linters": {
"clang": {
"@disable": false,
"args": [],
"excludes": [],
"extra_flags": "",
"include_dirs": [
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/include",
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include",
"/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include",
"/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks"
]
}
}
include_dirsは以下の方法で確かめられる。
clang -v test.c &> ./test.log
これで見てみると確かに-cc1
をつけるとincludeパスが違うんだよな。なんでなんだろう。
ああ、それにしてもなんか嫌だな。この解決方法...
Author And Source
この問題について(SublimeLinter-contrib-clangが上手くいかなくなった。), 我々は、より多くの情報をここで見つけました https://qiita.com/vintersnow/items/b069d2d03299aeae6260著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .