2015-06-20 15 views
17

Ho problemi significativi nella configurazione di flycheck per C++ 11. In questo momento, flycheck segnala cose come std::to_string(). Il correttore che sto usando è solo g ++. Cosa posso aggiungere nel file .emacs in modo tale che flycheck assumerà C++ 11 per impostazione predefinita?Configurazione di Flycheck per lavorare con C++ 11

risposta

37

Flycheck fornisce l'opzione flycheck-gcc-language-standard per questo scopo. Non si dovrebbe impostare a livello globale, perché questo si romperà il controllo del file C, ma è possibile impostare dal c++-mode-hook con il seguente codice nel file init:

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

Tuttavia, mi sento di raccomandare contro questo. Utilizzare invece Directory Variables per configurare lo standard di lingua per progetto.

Aprire la directory principale del progetto in Dired with C-x d, quindi digitare M-x add-dir-local-variable RET c++-mode RET flycheck-gcc-language-standard RET "c++11". Ciò creerà un file .dir-locals.el nella directory principale del progetto. Emacs legge questo file ogni volta che visiti un file da questa directory o da qualsiasi sottodirectory e imposta le variabili in base alle regole in questo file. In particolare, Emacs imposterà ora lo standard di linguaggio per il controllo della sintassi Flycheck in C++ 11 per tutti i file C++ nel progetto.

+0

Ho provato che con le variabili di directory e nel buffer C++, la variabile mostra come * C++ 11 *. Ma ho ancora avvertito come * l'identificatore del tipo auto è un'estensione C++ 11 *. –

+0

@Enzo Chi, Funziona per me, probabilmente è necessario eliminare il buffer di file e riaprire il file. –

+4

Nel caso in cui non funzioni per alcune persone: sembra che il flycheck userà clang prima di gcc se il primo è installato. In tal caso la variabile è flycheck-clang-language-standard. – dmg

4

Molto buone risposte già. Voglio solo aggiungere che, se si utilizza invece clang, la variabile da modificare è flycheck-clang-language-standard.

+1

o aggiungi una riga "-std = C++ 11" nel file .clang_complete che si trova nella directory principale del tuo progetto. – elinx

Problemi correlati