Atomのlinter-gccがチェックしてくれない!動かない!機能しない!

atom-linter-gcc

 

この記事のザックリした内容
Atomのlinter-gccが機能しなくなったのを解決する
Windows対象ですが、Macでも参考になると思います
解決に至るまでの思考過程が分かるというオマケ付き!

こんにちは。ナガオカ(@boot_kt)です。

AtomでC/C++を書く際、linter-gccを使っている方が多いと思います。
linter-gccは書き間違いや警告があればすぐに指摘してくれるのでなかなか重宝する存在です。

 

んで、、、

linter-gccが全くチェックをしてくれなくなっちまったーーー!!!

というお悩みを頂きました。

 

いつからそうなったのか細かいVerは分かりませんが、少なくとも「linter(Ver.2.1.2)+linter-gcc(Ver.0.7.1)」だと、これらのパッケージを入れただけでは動きません

 

この記事では、最新(2017/04/20時点)のVerでlinter-gccを機能させるための手順を書きました。

前半は、linter-gccを動かすための手順、
後半は、どうやって解決策を探したかです。

解決策だけを見るのではなく、解決策の探し方も良かったらぜひ参考にしてください。

対象OSについて
Windowsを対象にしていますが、Macでもほぼ同じです。
適宜読み替えてください。
分からなければコメントしてください。
必要であればMac編も書きますので。
用語について
「解凍」が分からない方 → 「圧縮ファイルを展開する」ことです

 

 

 

関連記事

※本文中で必要に応じて関連記事へのリンクを書いておりますが、ここにまとめておきます。

  1. WindowsにAtomでお手軽にC言語環境を作る方法
  2. [Atomで覚えるC言語入門 – 初歩の初歩 – ] No.00 C言語の環境を整える
  3. WindowsでのC言語の開発環境
  4. WindowsでのC言語の開発環境(Eclipse)
  5. [Win/Mac][超初心者向け]C言語の開発環境の初歩の初歩、シンプルな開発環境を作って使う

1.解決策編

linter-gccを使うためにはAtomやgccのインストールが必要です。
この記事を読む方は既にインストールされているはずですので、gcc(MinGW)のインストール手順は省略します。

分からない方は以下を参考にしてください。

↓MinGWの部分を参照
WindowsでのC言語の開発環境(Eclipse)

CMakeをダウンロード

  1. ↓以下のアドレスにアクセス
    cmake

  2. ZIP(cmake-3.8.0-win64-x64.zip)をダウンロード
    ダウンロードするファイルについては各自で判断してください。
    32bit版Windowsなら、cmake-3.8.0-win32-x86.zip
    64bit版Windowsなら、cmake-3.8.0-win64-x64.zip
    Macなら、cmake-3.8.0-Darwin-x86_64.dmg

    また、.zipなのか.msiなのか、.dmgなのか.tar.gzなのか、各自の好みで選んでください。
    私は64bit版Windows用のzipをダウンロードしました。

  3. ダウンロードしたZIP(cmake-3.8.0-win64-x64.zip)をCドライブの直下に解凍
    cmake-3.8.0-win64-x64

    cmake-3.8.0-win64-x64.zipを解凍したらcmake-3.8.0-win64-x64というフォルダができます。
    このcmake-3.8.0-win64-x64フォルダをCドライブ直下に置いてください。

    どこに置いてもいいですが、半角英語だけのパスにしてください。
    今回は全角文字(日本語等)が混ざっているパスだとちゃんと動かないことがあります。
    よく分からなければCドライブ直下でいいんじゃないかと思います。
    ※使い終われば捨ててもいいです。使い続けるならPATHを通しておくと良いでしょう。

    PATHが分からない方はこちらを参考にしてみてください。(あまり参考にならないかも・・・)
    [Win/Mac][超初心者向け]C言語の開発環境の初歩の初歩、シンプルな開発環境を作って使う
  4. cmake.exeがあることを確認しておきます
    cmake.exe

    C:\cmake-3.8.0-win64-x64\bin\の中にcmake.exeがあることを一応確認しておきます。
    後で使いますんで。

gtf2tabをダウンロード

  1. ↓以下のアドレスにアクセス
  2. ZIP(gtf2tab-master.zip)をダウンロード
    gtf2tab

    gtf2tab
  3. ダウンロードしたZIP(gtf2tab-master.zip)をCドライブの直下に解凍
    gtf2tab-master

    gtf2tab-master.zipを解凍したらgtf2tab-masterというフォルダができます。
    このgtf2tab-masterフォルダをCドライブ直下に置いてください。

    どこに置いてもいいですが、半角英語だけのパスにしてください。
    今回は全角文字(日本語等)が混ざっているパスだとちゃんと動かないことがあります。
    よく分からなければCドライブ直下でいいんじゃないかと思います。
    ※使い終われば捨ててもいいです。

cmakeコマンド実行

  1. gtf2tab-masterフォルダの直下にbuildフォルダを作成
    gtf2tab

  2. buildフォルダを開く
    エクスプローラーのアドレスバーにcmdと入力してEnterキーを押す
    gtf2tab

    そしたら、DOSプロンプトが起動します
    gtf2tab

  3. DOSプロンプトに以下のコマンドを打つ
    cmake

    -DCMAKE_EXPORT_COMPILE_COMMANDSの間は半角空白を入れても入れなくてもどっちでもいいです。
    -G"MinGW Makefiles"の間は半角空白を入れても入れなくてもどっちでもいいです。
    最後、ピリオド2つ(..)は入れてください
  4. コマンド終了
    cmake

    Windowsの場合、-G "MinGW Makefiles"は必要だと思います。
    Macなら要らないかも知れません。
  5. buildフォルダの中にcompile_commands.jsonができている
    compile_commands.json

    中身は単なるテキストファイルなので、興味があるならテキストエディタで開いて見ればいいですよ。

AtomでC言語のソースコードを書きます

これでlinter-gccは機能するはずです。(CtrlSとかで保存した時に機能するはず)
拡張子は.cでも.cppでもどちらでもいいです。

フォルダ名は日本語や全角文字の入っていないパスにしてくださいね。
パスの中に日本語や全角文字が入っていると、linter-gccは機能しないと思います。

 
広告




 

2.解決策の探し方編

せっかくなので解決策の探し方を書いておきます。
私もそんなに知識は無いですが、ググればなんとかなるものです。
英語もサッパリ分かりませんが、読めばなんとかなるものです。
Google翻訳でページ丸ごと翻訳してもいいし。

以下は、私の思考過程を書いています。
参考になれば幸いです。

 

やっぱり最初に見るのは公式サイトっしょ

まずはlinter-gccの公式サイトを見てみるか・・・・
linter-gcc

linter-gcc

上から見ていくと・・・

Important info for Mac OSX users! か・・・・
Xcodeを使っている場合?
-fmax-errors オプションがどーたらこーたら、
まぁ・・・、僕のはWindowsなので無視だー(笑)

次は・・・
Linter in action!
GIFで動いているところを見せてくれてるだけじゃん
でも、linter-gccの作者の手元のAtomではlinter-gccはちゃんと機能している

ってことは、自分のAtomでも動くはず。

※英語OSや日本語OSの違いだとかAtomに入れているパッケージの違いだとかあるけど、まぁ今は気にしないでおこう

次は・・・
Using CMake compile settings

コマンド書いてるやん

参考:https://atom.io/packages/linter-gcc

DOSプロンプトでこれ打てばいいんでしょ?

でもcmakeなんてコマンド知らんで
まぁ、どっかからダウンロードすればいいんでしょ
あとでcmakeをググればええわ

 

読み進めると/build/compile_commands.jsonがどーたらこーたらって書いてる

compile_commands.json file which linter-gcc can get the compile settings from.

参考:https://atom.io/packages/linter-gcc

linter-gcccompile_commands.json から compile settingscan get する」

みたいな事書いてる

 

ってことは・・・・

cmakeコマンド打てばcompile_commands.jsonができるんやね

やっぱり後でcmakeをググろう

次は・・・
File/Project-Specific settings

Looks for」って書いてるので、linter-gccがsample.cpp.gcc-flags.jsonとか.gcc-flags.jsonを探すんやろな
3番見ると、「3. If no .gcc-flags.json is found,・・・」って書いてるので、無くてもいいんじゃね?(笑)

後で試してみる

 

.gcc-flags.jsonには、↓コレを書けばいいんだね。

{
“execPath”: “/usr/bin/g++”,
“gccDefaultCFlags”: “-Wall”,
“gccDefaultCppFlags”: “-Wall -std=c++11”,
“gccErrorLimit”: 15,
“gccIncludePaths”: “.,./include,./path”,
“gccSuppressWarnings”: true
}

参考:https://atom.io/packages/linter-gcc

"/usr/bin/g++"の部分は"C:\MinGW\bin\gcc.exe""C:\MinGW\bin\g++.exe"に置き換えればいいはず

次は・・・
Usage notes:
-fsyntax-onlyとか.gchとか書いてるけど、これってヘッダファイルの時の話だったような気が・・・・

一応、「fsyntax-only gch」でググっとくか

そしたら、こんなページが出てきた

まぁ今のところはgchファイルできてもいいんで、気が向いたら設定するわ
今は放置でオッケー♪

Plugin installationReporting Issues はもういいや

次はcmakeをググれーーーー!

cmake
cmakeとは
cmake 使い方
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS
cmake DCMAKE_EXPORT_COMPILE_COMMANDS
cmake CMAKE_EXPORT_COMPILE_COMMANDS

みたいなキーワードで検索してみるか・・・

(幾つかの記事を読んでみる)

イマイチよう分からん・・・・(ーーメ
多分makefileみたいなのを作ってくれるファイルかな?

cmake.exeCMakeLists.txtを必要とするだと?

gtf2tab-masterフォルダの中見たら・・・

CMakeLists.txtあるやん!!!

CMakeLists.txtの中読んでみたけど、分かるような分からんような・・・

いや、分かりまへん!!!

まぁいいや・・・・

 

で、CMAKE_EXPORT_COMPILE_COMMANDSオプションは何やねん?

CMAKE_EXPORT_COMPILE_COMMANDSを調べてみる)

コンパイルに必要な設定をjsonファイルに出力してくれるだと?

ふ~ん・・・・・

まぁ、とりあえずダウンロードして解凍しとくか

よう分からんけど、実行してみてから考えたらええわ

分からんけど実行してしまえ!!!

cmake-3.8.0-win64-x64gtf2tab-masterをCドライブの直下に解凍

cmakeにPATH通すの面倒なのでフルパスで書いたらええわ

実行結果はエラーは無いけど・・・

Visual Studio 14 2015とか書いてるやん????
gccとかmingwって出なくてええんやろか???

(C:\gtf2tab-master\buildの中にできたファイルを見てみる)

compile_commands.jsonができてへんや無いかーーーいっ!!!

やっぱりかーーーいっ!!!

まぁ、Visual Studio 2015をインストールしてるしなぁ・・・

僕のマシンの設定では、(たまたまやけど)Pathの順番はgccの方が後なので、cmakeはVisual Studio 2015を参照したんかな?
じゃ、Pathの順番を変えたらええんかな?

いや、そんなん面倒や
Pathの設定なんてそうそう変更するもんちゃうやん

gccかVisual Studio 2015かを選択するオプションがあるんじゃね???

まずはcmakeのヘルプを見てみよう

出てきたのがこれ
 ↓

Generatorsのところに、Visual Studio 15 2017とかMinGW Makefilesとか書いてある

おっ!

切り替えられるオプションあるんちゃうん!?

Generatorsなので-G を使えばいんじゃね???

MinGW Makefilesは空白が入ってるのでダブルクォーテーションで囲って・・・

実行・・・ポチッとな・・・・

キターーーーーーーッ!!

ビンゴーーーーッ!!!

今度はGNUとかC:/MinGW/bin/gcc.exeとか出てるし、Visual Studio 14 2015は出てないし

C:\gtf2tab-master\buildの中にcompile_commands.jsonファイルできてるーーーーー!

AtomでC言語を書いてみよう!!

保存すればちゃんとlinter-gccが機能してチェックしてくれるーーーー

ソースコードと同じ場所に.gcc-flags.jsonファイル置いてないけど、ちゃんと機能してるやん

.hファイル書いたら確かに.gchファイルできるわ
鬱陶しくなったら設定するわ

こんな感じでなんとか解決しました

結局のところ、公式サイトに書かれてあることを読んで実行しただけです。
分からない用語とかはその都度調べて(ある程度だけ)理解して、試しに実行してみたまでです。

間違っていてもやり直せばいいだけですしね。

※まぁ、上には書いてないだけで、超調べまくったり、パソコンの中を検索しまくったりはしてるんですけどね(笑)

 
広告




 

解決できていないこと

結局、やったのって、cmakeコマンドを動かしただけなんですよねぇ~
Cドライブ直下に置いてたgtf2tab-masterフォルダもcmake-3.8.0-win64-x64フォルダも削除したんですよ

でも!!!、linter-gccは機能してるんですよね。

なぜ?

なぜ??

なぜ????

※削除後にマシンの再起動もやったけど機能してます
※全く別のマシンに同じ事やってもlinter-gccは機能してます

cmakeコマンドで、なんらかのファイル(jsonファイル?exeファイル?)をどこかに置いてるんだと思うんですけど、さっぱり分かりません。

マシンの中を探しまくったんですけど、それらしいファイルは無いし、なぜlinter-gccが機能しているのかよく分かりません。

ご存知の方、是非教えてくださーーーーい!!!!

さいごに、

こんな感じで、なんとか解決策を見つけました。
いやぁ、良かった良かった!!!

 

今回は解決策を探すまでの道のりも書いてみました。

今回のような内容はなかなかややこしいので、プログラミング経験が浅いとちょっと解決は難しいと思います。
なので、今回はいいんですが、

ごくごくたま~に、こんな事があります。

質問される
 ↓
僕も分からない
 ↓
ググる
 ↓
それらしいページを見つける
 ↓
その結果を質問者さんへ返す

僕は単にググってるだけってのがたまぁ~にですよ、たまぁ~にあります。

 

質問して頂けるのは本質的には嬉しいです。
マジで嬉しいです。

でもやっぱり質問者さんの事を考えると、質問者さんが独りで解決する力を持ってもらうのが良いなぁと思うんですよ。

プログラミングだけじゃないですけど、トラブルを自力で解決する事が一番の上達への近道だと僕は思っています。

これはマジのマジでそう思っていますし、実感として持っています。

僕がプログラミングやパソコン、コンピューターの事を覚えられたのは、トラブルに次ぐトラブルがあったからと言っていいでしょう。

 

まぁ、Twitterで「解決策だけ書いて、解決策の見つけ方を書かない記事なんてゴミ」って言われたこともあるので、今回は解決策の見つけ方(の思考過程)を書いてみました(笑)

 

ってことで質問お待ちしていまーーーーす!!!

プログラミングレッスンやってますんで、良かったら受講してね。

 

参考書籍

Atomの事を覚えるならこの本があればいいんじゃない

こんなん出てるのか!!??

5 件のコメント

  • 掲載ありがとうございます。
    以前に掲載していただいた内容も含め,実施をしてみました。
    しかし,残念ながらいまだlinter-gccの利用はできておりません。

    取り急ぎ環境と状況をお知らせしたいと思います。
    OS
    Windows7 Pro SP1 32bit
    MinGW
    mingw-get version 0.6.2-beta-20131004-1
    i686-6.3.0-release-posix-dwarf-rt_v5-rev2
    Cmake
    cmake-3.8.0-win32-x86 (zip,msi両方確認)
    gtf2tab-master
    記載されているものと同じ

    Cmakeの設定は無事に完了して,compile_commands.jsonも作成されていました。ちなみにもう一度Cmakeにて設定を既に設定済のようなコマンドも出ております。

    ですが,Atomの挙動は変わっておりません。

  • なおMinGWはCmakeをする際に”libgmp-10.dllがない”と
    怒られてしまい,完全消去->再インストールしても改善されないため
    新しいものを入れて確認しています。

    Cmakeは記載ではCMDで記述しておりますが,GUIでも同じことができるようでした。こちらの方がわかりやすいかもしれません。

    linter-gccは
    個別設定(.gcc-flags.json)
    グローバル設定
    の2種で実施(してみましたが変化はありませんでした。

    その他いろいろと試してみたのですが,事の本質が私もよくわかってないので解決には至っていません。
    ただ,PC依存可能性もぬぐえていないため,それら含めて継続トライしてみます。

    もし何かわかりましたら掲載していただけると助かります。

    • ◆1
      MinGWを普通にインストールしたらC:\MinGW\binにlibgmp-10.dllがあるはずですので、ご確認頂けますか?

      ◆2
      C:\MinGW\binにPATHは通っていますでしょうか?

    • > GUIでも同じことができるようでした。

      GUIでできるのは知っていたのですが(起動はさせてないのでどんな感じなのかは分かりませんが)、コマンド打つだけの方がややこしくないかなと思っていました。
      GUIの方も書いた方が良さそうですね。

      後日GUIも書き加えておきます。
      ご意見ありがとうございます!
      うれしいです。

  • コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

    ABOUTこの記事をかいた人

    Windows/Mac/Linuxを使う現役システムエンジニア&プログラマ。オープン系・組み込み系・制御系・Webシステム系と幅広い案件に携わる。C言語やC#やJava等数多くのコンパイラ言語を経験したが、少し飽きてきたので、最近はRubyやPython、WordPressなどのWeb系を修得中。初心者向けのプログラミング教室も運営中。オンライン・対面・出張等でプログラミングをレッスンします。