2015-06-20 12 views
17

Tôi đang gặp phải sự cố nghiêm trọng khi định cấu hình flycheck cho C++ 11. Ngay bây giờ, flycheck đang gắn cờ những thứ như std::to_string(). Bộ kiểm tra tôi đang sử dụng chỉ là g ++. Những gì tôi có thể thêm vào tập tin .emacs như vậy mà flycheck sẽ giả sử C++ 11 theo mặc định?Định cấu hình Flycheck để làm việc với C++ 11

Trả lời

37

Tờ bướm bay cung cấp tùy chọn flycheck-gcc-language-standard cho mục đích này. Bạn không nên đặt nó trên toàn cầu, bởi vì đó sẽ phá vỡ kiểm tra các tập tin C, nhưng bạn có thể thiết lập nó từ c++-mode-hook với đoạn mã sau vào tập tin init của bạn:

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

Tuy nhiên, tôi muốn giới thiệu chống lại điều này. Thay vào đó, hãy sử dụng Directory Variables để định cấu hình chuẩn ngôn ngữ cho mỗi dự án.

Mở thư mục gốc của dự án của bạn trong Mệt mỏi với C-x d, sau đó nhập M-x add-dir-local-variable RET c++-mode RET flycheck-gcc-language-standard RET "c++11". Điều này sẽ tạo ra một tập tin .dir-locals.el trong thư mục gốc của dự án của bạn. Emacs đọc tệp này bất cứ khi nào bạn truy cập tệp từ thư mục này hoặc bất kỳ thư mục con nào và đặt biến theo các quy tắc trong tệp này. Cụ thể, Emacs giờ đây sẽ đặt tiêu chuẩn ngôn ngữ cho kiểm tra cú pháp Flycheck thành C++ 11 cho tất cả các tệp C++ trong dự án của bạn.

+0

Tôi đã thử với các biến thư mục và trong bộ đệm C++, biến hiển thị dưới dạng * C++ 11 *. Nhưng tôi vẫn nhận được cảnh báo là * auto specifier là một phần mở rộng C++ 11 *. –

+0

@Enzo Chi, Làm việc cho tôi, có thể bạn cần xóa bộ đệm tệp và mở lại tệp. –

+4

Chỉ trong trường hợp nó không hoạt động đối với một số người: có vẻ như flycheck sẽ sử dụng clang trước gcc nếu trước đây được cài đặt. Trong trường hợp đó biến là flycheck-clang-language-standard. – dmg

4

Đã có câu trả lời hay. Tôi chỉ muốn thêm, nếu bạn sử dụng clang thay vào đó, thì biến cần được sửa đổi là flycheck-clang-language-standard.

+1

hoặc thêm một dòng "-std = C++ 11" vào tệp .clang_complete nằm ở thư mục gốc của dự án của bạn. – elinx

Các vấn đề liên quan