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が便利。

関連情報