gcc には気を付けないと。
先日のエントリで、ob-C の編集バッファで flymake を有効にする方法を書いてみましたが、大事なことを忘れていました。
ご存知の方には何を今更ということではありますが、gcc のコンパイラドライバは、ソースファイルの拡張子を見て言語を推測しています。そのため、拡張子が無いファイルをソースとして指定すると、
$ gcc -c source gcc: source: linker input file unused because linking not done
などと怒られてしまうことに。先日のエントリで紹介したコードでは、編集バッファの buffer-file-name を元に flymake が一時ファイルを作成して gcc に渡すので、何もしていないと上記のエラーとなってしまいます。
回避するには、`flymake-c-init' で作成する gcc のコマンドライン (ここで Makefile を指示しているなら Makefile によるコンパイルのコマンドライン) に、
$ gcc --help Usage: gcc [options] file... Options: (snipped...) -xSpecify the language of the following input files Permissible languages include: c c++ assembler none 'none' means revert to the default behavior of guessing the language based on the file's extension
というオプションを指定します。
(list "gcc" (list "-x" "c" "-Wall" "-Wextra" "-fsyntax-only" local-file) (file-name-directory buffer-file-name))
の様な感じですね。
こうしておくと、どんなファイルでも C言語のソースファイルと認識して、C のコンパイル (syntax-check) を実行してくれることになります。
そもそも慎重さが足りないので、慌てて書くと良くないのですよね……と言いつつ、今日も時間がない状態で書いているという……またやらかしてしまうのかも。