web-dev-qa-db-ja.com

C ++ 11で動作するようにFlycheckを構成する

C++ 11のflycheckの構成で重大な問題が発生しています。現在、flycheckはstd::to_string()などのフラグを立てています。私が使用しているチェッカーは単なるg ++です。 flycheckがデフォルトでC++ 11を想定するように、.emacsファイルに何を追加できますか?

25
mrQWERTY

Flycheckには、この目的のためのオプションflycheck-gcc-language-standardが用意されています。 Cファイルのチェックが無効になるため、グローバルに設定しないでください。ただし、c++-mode-hookから、initファイルに次のコードを使用して設定できます。

(add-hook 'c++-mode-hook (lambda () (setq flycheck-gcc-language-standard "c++11")))

ただし、これはお勧めしません。代わりに、 Directory Variables を使用して、プロジェクトごとに言語標準を構成します。

C-x dを使用してDiredでプロジェクトのルートディレクトリを開き、M-x add-dir-local-variable RET c++-mode RET flycheck-gcc-language-standard RET "c++11"と入力します。これにより、プロジェクトのルートディレクトリに.dir-locals.elファイルが作成されます。 Emacsは、このディレクトリまたはサブディレクトリからファイルにアクセスするたびにこのファイルを読み取り、このファイルのルールに従って変数を設定します。具体的には、Emacsはプロジェクト内のすべてのC++ファイルについて、Flycheck構文チェックの言語標準をC++ 11に設定します。

49
lunaryorn

すでに非常に良い答えです。追加したいのは、代わりにclangを使用する場合、変更する必要がある変数はflycheck-clang-language-standard

8
Alexander