Flycheck の In file included from 警告を消す
備忘録です。
謎警告
最近 emacs で Node.js のネイティブモジュールを書いてみたり、
Qtアプリケーションを作ろうと頑張っているのですが、
#include
文のところで Flycheck に こんな警告をよく吐かれていました。
In file included from In file included from In file included from In include /usr/local/opt/qt5/include/QtWidgets/QApplication
・・・そもそもこれエラーなのか何なのか。
原因
どうやら flycheck のバグだとか何だとか言われていて(某所だとパースエラーだとか)、 flycheck の警告文からでは何が問題なのかがわかりませんでした。 なので、flycheckがどのようなコマンドを叩いて、どのような結果を得ているのかを どうにか見れないか調べてみました。
色々調べてみたところ、
に書いてある通り、C-c ! C-c
を叩くことで、実際に実行されているコマンドと
実行結果(解析結果)の全文を見ることができます。
結果
で、やってみたところ
1*- mode: compilation; default-directory: "(省略)" -*- 2Compilation started at Tue Nov 8 15:04:30 3 4clang -fsyntax-only -fno-color-diagnostics -fno-caret-diagnostics -fno-diagnostics-show-option -iquote (省略) -Wall -Wextra -I (省略) 5In file included from <stdin>:1: 6In file included from /usr/local/opt/qt5/include/QtWidgets/QApplication:1: 7In file included from /usr/local/opt/qt5/include/QtWidgets/qapplication.h:43: 8In file included from /usr/local/opt/qt5/include/QtCore/qcoreapplication.h:43: 9/usr/local/opt/qt5/include/QtCore/qglobal.h:1133:23: warning: rvalue references are a C++11 extension 10In file included from <stdin>:1: 11In file included from /usr/local/opt/qt5/include/QtWidgets/QApplication:1: 12In file included from /usr/local/opt/qt5/include/QtWidgets/qapplication.h:43: 13In file included from /usr/local/opt/qt5/include/QtCore/qcoreapplication.h:43: 14In file included from /usr/local/opt/qt5/include/QtCore/qglobal.h:1145: 15In file included from /usr/local/opt/qt5/include/QtCore/qatomic.h:46: 16/usr/local/opt/qt5/include/QtCore/qbasicatomic.h:61:4: error: "Qt requires C++11 support" 17/usr/local/opt/qt5/include/QtCore/qbasicatomic.h:90:13: error: unknown type name 'QAtomicOps' 18/usr/local/opt/qt5/include/QtCore/qbasicatomic.h:90:23: error: expected member name or ';' after declaration specifiers 19/usr/local/opt/qt5/include/QtCore/qbasicatomic.h:93:23: error: use of undeclared identifier 'QAtomicOpsSupport' 20/usr/local/opt/qt5/include/QtCore/qbasicatomic.h:93:53: error: no member named 'IsSupported' in the global namespace 21/usr/local/opt/qt5/include/QtCore/qglobal.h:761:63: note: expanded from macro 'Q_STATIC_ASSERT_X' 22/usr/local/opt/qt5/include/QtCore/qglobal.h:756:110: note: expanded from macro 'Q_STATIC_ASSERT' (以下略)
なるほど、原因はC++11
絡みのところにあったらしいです。
何が原因かというと、C++11
に対応していない状態で flycheck を動かしていたということでした。
上記によると、emacs の設定ファイルに
(add-hook 'c++-mode-hook (lambda () (setq flycheck-gcc-language-standard "c++11")))
を追加することで、flycheckが C++11
に対応してくれるようです。
私の環境でもこれで治りました。
結論
Flycheck の謎警告に困ったら、 C-c ! C-c
を見てみましょう。