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"

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-11-22 (土) 11:57:50 (3985d)