flymake を Visual C++ で (改)
昨日紹介した設定だと .h とかのファイルで使えないことが判明.
flymake を Visual C++ で - @kei10in の日記
VC のコンパイラは拡張子でファイルの種類を判断してるみたい.
なので,強制的に C 言語または C++ としてコンパイルさせるオプション /TC, /TP
を追加すればいい.
最終的にはこんな感じ
(defun flymake-vc-init () (let* ((temp-file (flymake-init-create-temp-buffer-copy 'flymake-create-temp-inplace)) (local-file (file-relative-name temp-file (file-name-directory buffer-file-name)))) (list "cl" (list "/nologo" "/TC" "/W4" "/Wp64" "/Zs" local-file)))) (defun flymake-vc++-init () (let* ((temp-file (flymake-init-create-temp-buffer-copy 'flymake-create-temp-inplace)) (local-file (file-relative-name temp-file (file-name-directory buffer-file-name)))) (list "cl" (list "/nologo" "/TP" "/W4" "/Wp64" "/Zs" local-file)))) (push '("\\.c\\'" flymake-vc-init) flymake-allowed-file-name-masks) (push '("\\.h\\'" flymake-vc-init) flymake-allowed-file-name-masks) (push '("\\.cpp\\'" flymake-vc++-init) flymake-allowed-file-name-masks) (push '("\\.hpp\\'" flymake-vc++-init) flymake-allowed-file-name-masks)
C++ のヘッダも .h をつかってるなら .h に対しても flymake-vc++-init
を使ってやればいい.
あと,あらかじめインクルードディレクトリとかを設定しておきたい場合は,環境変数 INCLUDE
に設定しておけばいいみたい.