flexやらyaccやらの課題をやるときにいちいちコンパイルするのめんどくせぇ!!ってなったので記事を書く.
対象
- makeって聞いたことあるし, 使ったこともあるけど自分でMakefile書いたことない
- っていうかそもそもmakeってなんぞや
という方向け
用意するもの
特になし windowsならmingwとか入れておく必要がありそう makeコマンドが通ればOK!
使いかた
まずはMakefileを作る(最初は大文字! 'M'akefile!) 適当なエディタで保存してもいいのよ
touch Makefile
まずはサンプル
今回の課題はflexとyaccを使ったものだったので, そのMakefileを
学校のflexやらyaccやらを使った課題用のMakefile
解説
microC: y.tab.c lex.yy.c
gcc -w y.tab.c lex.yy.c -o microC
microC の部分は"ターゲット"という. 今回は このファイルを生成するよ! っていう感じで使ってる y.tab.c lex.yy.c は "依存ファイル" という. コマンドを実行するために, 必要なファイルを指す.
y.tab.cとlex.yy.cはyaccとflexを使ってできるもの. だからこの依存ファイルはここで生成するよ! っていうのを書く
y.tab.c: microC.y
yacc -dv -y microC.ylex.yy.c: microC.l
flex -l microC.l
これでMakefileできた.
あとはコマンドラインで
make
これで実行ファイルができる. Vimなら:makeでmakeができる.Emacsでも多分似たようなのある
makeファイルの利点
今まではflex, yaccをして, gccの3工程あったけど, これを作ったら
make
で終わる. あと地味な利点として, makeをすると, 変更されていないファイルはコンパイルしない. っていうのがある. 全部コンパイルしなおしてたら時間かかるから最低限に抑えてくれる.
ひとこと
例がわかりにくいよボケェ! って方はコメント書いてください(´・ω:;.:... 学校の課題に合わせました
他にも色々できるから需要がアレば記事書きますー cmakeとかもろもろ