flymake で nmake

flymake で nmake が使われるようにした.

単純に Visual C++コンパイラーを直接呼ぶより include ディレクトリとか追加できて超便利!

.emacs.el

.emacs.el にはこんな感じで追加するといいよ

(defun flymake-nmake-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))))
    ;; "/F" "flymake.mak" は Makefile を指定する人用.
    ;; Makefile が "Makefile" な人はいらない.
    (list "nmake" (list "/NOLOGO" "/I" "/S" "/F" "flymake.mak"
                        (concat "CHK_SOURCES=" local-file) "check-syntax"))))
  
(push '("\\.c\\'" flymake-nmake-init) flymake-allowed-file-name-masks)
(push '("\\.h\\'" flymake-nmake-init) flymake-allowed-file-name-masks)
(push '("\\.cc\\'" flymake-nmake-init) flymake-allowed-file-name-masks)
(push '("\\.cpp\\'" flymake-nmake-init) flymake-allowed-file-name-masks)
(push '("\\.hh\\'" flymake-nmake-init) flymake-allowed-file-name-masks)
(push '("\\.hpp\\'" flymake-nmake-init) flymake-allowed-file-name-masks))

Makefile

僕の場合は "flymake.mak" っていう flymake 専用の Makefile を作った.

普通の人は "Makefile" っていう普通の Makefile でいいと思う.

中身は↓な感じ.

CC=cl /TC
CXX=cl /TP

# ここに追加の include ディレクトリ パスを追加する.
CFLAGS=/nologo /W4 /Wp64 /I"C:\\Program Files\\Microsoft Visual Studio 8\\VC\\atlmfc\\include"
CPPFLAGS=$(CFLAGS)

check-syntax:
		$(CXX) $(CPPFLAGS) /Zs $(CHK_SOURCES)