コンパイルの仕方

Emacsでプログラムを書いている時に、Emacsの中でコンパイルすることが可能 である。
    M-x compile
とすると、
    Compile command: make -k
とでる。ここでリターンキーを押すと、makeコマンドが実行される。makeコマ ンドについての詳細はここでは省略する。もちろん、この``make -k'' を消して、
    cc test.c
のように書き直せば、ccコマンドが実行される。

このコマンドを実行すると、画面にウィンドウが一つ開かれ、そのウィンドウ で状況(エラー状況その他)が表示される。うまくいけば、最後の行に
    Compilation finished at Sat Jul 11 20:14:39
のようなものが表示される。うまくいかなかった場合には、
    Compilation exited abnormally with code 2 at Sat Jul 11 20:21:04
のようなものが表示される。ここで、一つ注意しなければならないのが、この コマンドが実行されるディレクトリである。一般的に編集しているファイルを コンパイルする場合が多いが、そのような用途のために、Emacsではこのよう なコマンドは今、編集しているファイル(カレントウィンドウのファイル)のあ るディレクトリで実行される。Emacsを立ちあげた時のディレクトリではない ので注意して欲しい。

ccなどのコマンドを使用した場合、エラーメッセージもこのウィンドウに表示 される。これを利用して、エラーファイルのエラー行に飛ぶことができる。

例えば、以下のようなプログラムを作成して、コンパイルしたとする。

#include        <stdio.h>

main()
{
    printf("Hello world\n")
}
このプログラムを、test.cというファイル名で保存してあるとする。
    M-x compile[RET]
    Compile command: cc test.c -o test[RET]
としたとすると、printfの行に;を忘れているので、 Fig-2のようなメッセージが出る。

#include 

main()
{
    printf("Hello World!\n")
}


[--]E_:--%%-Mule: test.c       3:32pm  (C)--All---------------------------
cd ~/
gcc test.c
test.c: In function `main':
test.c:5: parse error before `{'

Compilation exited abnormally with code 1 at Sat Feb 14 15:31:23



[--]E_:--%%-Mule: *compilation*   3:32pm  (Buffer Menu)--All-----------------

Figure 2:コンパイルメッセージ

このメッセージは、test.cファイルの6行目、}のところ近辺に 文法的な誤りがあるという意味である。

ここで、
    C-x `
を打つ。すると、エラー行の表示がコンパイルメッセージが表示されているウィ ンドウの一番上にスクロールし、そのエラーのあった行にカーソルが移動する (パース(parse)するという)。以後、このキーを打つたびに次々と その後ろのエラー行に飛んでいく。ファイルが違っても問題なくエラー行へ行 く。また、エラーのあったファイルがまだEmacsに読み込まれていなくても、 勝手にEmacsでそのファイルを読み込んでそのファイルのエラー行へ飛んでく れる。

ただし、編集してしまうと、必ずしも飛んだ先がエラー行とは限らないことが ある。例えば、前のエラー修正で行数が変化している場合、その分だけ、エラー 行からずれていることがある。このような場合は、飛んだ先の行付近を、エラー メッセージを頼りにエラー行を探すことになる。

次回からこのM-x compileコマンドを実行すると、先ほど指示した (この例ではcc test.c -o test)ものが今度はデフォルトとなる。


前[シェルコマンドの使用方法]  次[grep]
戻る