2014-06-07 25 views
6

flycheck c/C++ - clang yolunu eklemeyi denedim, ancak çalışmadı.Nasıl eklenir c) c/C++ - clang?

ben ~/local/include içinde foo.h koyup katma aşağıdaki satırları init.el için:

(add-hook 'c++-mode-hook 
      (lambda() (setq flycheck-clang-standard-library "libc++"))) 
(add-hook 'c++-mode-hook 
      (lambda() (setq flycheck-clang-language-standard "c++1y"))) 
(add-hook 'c++-mode-hook 
      (lambda() (setq flycheck-clang-include-path 
          (list "$HOME/local/include/")))) 

Ve test.cpp adlı bir dosyada ben

#include <foo.h> 

flycheck sözü yazdı

'foo o .h 'dosya bulunamadı

Neyi yanlış yapıyorum? package.el ve clang3.4'dan emacs24, flycheck.el kullanıyorum.

(add-hook 'c++-mode-hook 
      (lambda() (setq flycheck-clang-include-path 
          (list (expand-file-name "~/local/include/"))))) 

Flycheck clang çalıştırmak için sistem kabuk kullanmaz, ne de başka türlü komut satırlarında kabuk parametrelerini genişletmek girişimi yok:

cevap

6

Kullanım expand-file-name ve ~ ev dizininde yollara başvurmak için. Bu nedenle, $HOME, açıkça işe yaramayan Clang'e 'dan geçer.

+0

Bu tür bir yapılandırmayı proje başına temelinde yapmanın bir yolu var mı? – Magnus

+0

@Magnus Emacs, bu amaç için Dizin Değişkenleri sunmaktadır. Daha fazla bilgi için kılavuza bakınız. – lunaryorn

+0

Evet, bu bir seçenek tabii ki, ancak oldukça sınırlı; yalnızca değişken değerlere izin verilir ve "flycheck-clang-include-path" kontrol edilen dosyaya göre gerçek yolu ele alır, bu da kod organizasyonlarının daha da karmaşık olmasını desteklemesi anlamına gelir. – Magnus

1

Bu yanıtla kredi almak istemiyorum, ancak birisine yararlı olabilir. Sen ~/myproject C++ kaynak kodunu içeren bir proje var

: Dizin değişkenleri ile değişken flycheck ayarlamak için kabul cevap ve yorum kullanarak
.
aşağıdaki içeriği dosyayı ~/myproject/.dir-locals.el ekleyin: benim için çalıştı

((nil . ((eval . (setq flycheck-clang-include-path 
         (list (expand-file-name "~/myproject/include/"))))))) 

.