🔨

Zigのサンプルプログラムをビルドするのに便利なMakefile

2022/12/21に公開

本記事はZigアドベントカレンダー21日目の記事です。

Zig用の簡単なMakefile

ソースファイルがひとつだけのようなサンプルプログラムで、しかもserverとclientの2つの実行ファイルをビルドする場合には zig init-exe で作成されるディレクトリ構成はおおげさすぎると感じました。
そこで以下のようなMakefileを書きました。

Makefile
EXES = tcp_server tcp_client

all: $(EXES)

%: %.zig
	zig build-exe $<
clean:
	rm -rf *.o $(EXES)
$ make
zig build-exe tcp_server.zig
zig build-exe tcp_client.zig

makeですのでソースコードに変更があったときだけコンパイラが実行されます。

さらにシンプルに

個別に変更が必要な情報は実行ファイルの名前だけです。
なので、以下のようなファイルを別のディレクトリ(例えば ../)に置いておけば

Makefile_zig
# Define executable file for build targets and zig options
# for example;
# EXES = tcp_server tcp_client
# ZIGFLAGS = -O ReleaseSafe

all: $(EXES)

%: %.zig Makefile
	zig build-exe $(ZIGFLAGS) $<
clean:
	rm -rf *.o $(EXES)

以下のように簡略化することができます。

Makefile
EXES = udp_server udp_client
# ZIGFLAGS = -O ReleaseSafe

include ../Makefile_zig

** 2022/12/23 追記 **
$(ZIGFLAGS)を追加しました。

Discussion