くれなゐの雑記

例を上げて 自分で手を動かして学習できる入門記事を多めに書いています

Makefileを書く(超入門)

flexやらyaccやらの課題をやるときにいちいちコンパイルするのめんどくせぇ!!ってなったので記事を書く.

対象

  • makeって聞いたことあるし, 使ったこともあるけど自分でMakefile書いたことない
  • っていうかそもそもmakeってなんぞや

という方向け

用意するもの

特になし windowsならmingwとか入れておく必要がありそう makeコマンドが通ればOK!

使いかた

まずはMakefileを作る(最初は大文字! 'M'akefile!) 適当なエディタで保存してもいいのよ

touch Makefile

まずはサンプル

今回の課題はflexyaccを使ったものだったので, その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はyaccflexを使ってできるもの. だからこの依存ファイルはここで生成するよ! っていうのを書く

y.tab.c: microC.y
yacc -dv -y microC.y

lex.yy.c: microC.l
flex -l microC.l

これでMakefileできた.

あとはコマンドライン

make

これで実行ファイルができる. Vimなら:makeでmakeができる.Emacsでも多分似たようなのある

makeファイルの利点

今まではflex, yaccをして, gccの3工程あったけど, これを作ったら

make

で終わる. あと地味な利点として, makeをすると, 変更されていないファイルはコンパイルしない. っていうのがある. 全部コンパイルしなおしてたら時間かかるから最低限に抑えてくれる.

ひとこと

例がわかりにくいよボケェ! って方はコメント書いてください(´・ω:;.:... 学校の課題に合わせました

他にも色々できるから需要がアレば記事書きますー cmakeとかもろもろ