Makefileの雛形として記録する。
簡単なMakefile。
CC=gcc OPT=-O3 COPT=$(OPT) -Wall -Wcast-qual -Wwrite-strings LOPT=$(OPT) all: lm lm: lm.o $(CC) $(LOPT) $^ -o $@ lm.o: lm.c lm.h $(CC) $(COPT) -c $< -o $@
これは、ビルド番号を自動カウントすることが出来る優れものだ。ただ、ソースファイルの拡張子の違いを同一視させたいのだが、いまいち、やり方がわからない。
CC=gcc CFLAGS=-O2 -Wall include bld/test1 OPTtest1=-DBLDtest=\"$(test1)\" export test1 all: ../test1 ../test2 ../test2: ../obj/test2.o $(CC) $(CFLAGS) -lstdc++ $^ -o $@ ../%: ../obj/%.o $(CC) $(CFLAGS) $^ -o $@ ../obj/%.o: %.c @if [ -n "$$$*" ]; then \ echo -n "$*=" > bld/$*; \ expr $$$* + 1 >> bld/$*; \ fi $(CC) $(CFLAGS) $(OPT$*) -c $< -o $@ ../obj/%.o: %.cc @if [ -n "$$$*" ]; then \ echo -n "$*=" > bld/$*; \ expr $$$* + 1 >> bld/$*; \ fi $(CC) $(CFLAGS) $(OPT$*) -c $< -o $@ clean: rm -f ../obj/*.o
一番最初に、以下のようなリビジョン番号ファイルを作成しておく必要がある。
$ cat bld/test1 test1=0
ソース上に、以下のようなdefine定義がされたことと同義となる。
#define BLDtest1 "0"