Makefileのお勉強メモですよ。「.PHONY」「環境変数」「C99の規格を強制する方法」
最近ずっと開発中の「静的型PerlのVM実装 static-perl」で、akinomyougaさんに、Makefileを作っていただいたのだけれど、そこで学んだことを少しメモしておく。
以下がstatic-perlのがMakefileだね。
https://github.com/yuki-kimoto/static-perl/blob/master/Makefile
.PHONY
.PHONYを使うと、同名のファイルが存在していても、大丈夫なよう。Makeは、たとえばcleanというファイルの名前があると、それが存在しているとみなされて、Makefileの中のcleanが実行されない。「これは思ってもみないことだ」
これを防いでくれるのだ。うれしいね。
.PHONY: all
環境変数
Makefileの中では環境変数を使える。この環境変数は、Makefileの中で参照できるんだけれど、makeを実行する外側からでも、環境変数を設定して制御できるんだって。
CC := gcc
「あ~、この設定の部分だけ変えたいんだけどぉ~」。そういうときにいいみたい。
C99の規格を強制する -std=c99
これはMakeの機能と関係なくってgccの機能なんだけど。「-std=c99」を強制できる。
CFLAGS := -std=c99 -g -O -Wall -Wextra
C99規格は、今使っているけど、C言語のちょっとした使いにくい部分が、だいぶ改善されているね。
コメントが「//」で書けるのが楽だし「stdint.h」ヘッダを使えば、環境に依存せず、基本データ型の大きさが指定できる。
「いろいろな環境で苦労なく動かしたーい。」そんなときC99が便利。