おいも貴婦人ブログ

生物系博士課程満期退学をしたAIエンジニアのブログ。

Emacsの開発環境を整える。C言語の開発環境(compile,flymake)

M-x compile [Enter]

を入力し、次にmakefileを指定する。その後、コンパイル結果が新しいウィンドウに表示されるので、
出力されているエラーの上でM-x `を実行するとバグの場所へジャンプが出来る。

flymake-mode

逐次コンパイルを実行し、エラー箇所をハイライトしてくれるスバラシイモードです。
.emacsに以下を記述します。

(add-hook 'c-mode-common-hook (lambda ()(flymake-mode t)))

C/C++のソースがあるディレクトリに以下のMakefileを作ります。事前にmakefileを作っている場合は名前を変更した方が良さそう…。

CC=gcc
check-syntax:
	$(CC) $(CFLGAS) -Wall -Wextra -pedantic -fsyntax-only $(CHK_SOURCES)

で同ディレクトリで、以下を実行すると、

make -s -C . CHK_SOURCES=ソースファイル SYNTAX_CHECK_MODE=1 check-syntax

そのディレクトリ内にある全てのファイルにflymakeが適用されます。

makefileを使わない方法もあるようです。

(require 'flymake)

(defun flymake-cc-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 "g++" (list "-Wall" "-Wextra" "-fsyntax-only" local-file))))

(push '("\\.cc$" flymake-cc-init) flymake-allowed-file-name-masks)

(add-hook 'c++-mode-hook
          '(lambda ()
             (flymake-mode t)))

参考URL:http://d.hatena.ne.jp/nyaasan/20071216/p1