複数の実行ファイルを一発make
AtCoderに参加してるときとか、AOJの問題を解いてる時は
今まではこういうmakefileを書いてmakeしてました*1。
all: prog1 prog2 prog3... prog1: prog1.o gcc -Wall -o prog1 prog1.c prog2: prog2.o gcc -Wall -o prog2 prog2.c prog3: prog3.o gcc -Wall -o prog3 prog3.c ...
そう、新しくファイルを作る度に書きたしてました。
実に効率が悪い。そして美しくないなと。
プログラミングコンテストとかだと、基本的に実行ファイルは単一のソースファイルからコンパイルするので、
なんとかmake一発で通るようにしたいなーと思ってました。
http://osima.jp/blog/makefile-and-wildcard/
を参考にmakefileを書いてみるとうまくいきました。
CC=g++ CFLAGS=-Wall .SUFFIXES = .cpp objs:=$(wildcard *.cpp) targets:=$(objs:.cpp= ) .PHONY:all all: $(targets) .cpp: $(CC) $(CFLAGS) -o $@ $<
これで新しくファイルを.cppファイルを作成しても、それに対応する実行ファイルを一発で作成できるようにったよやったね!