私はここに簡単なmakefileを持っています:
SOURCES= $(wildcard *.c)
OBJECTS= $(patsubst %.c, %.o, $(SOURCES))
NAMES= $(patsubst %.c, %, $(SOURCES))
CC=gcc
CFLAGS= -Wall -c -o
TASKS_IN_DIRS= $(addprefix obj/,$(OBJECTS)) $(addprefix bin/,$(NAMES))
all: $(NAMES)
$(NAMES): %: %.o $(OBJECTS)
$(CC) -o bin/$@ obj/$^
$(OBJECTS): %.o: %.c
$(CC) $(CFLAGS) obj/$@ $<
clean:
rm -rf $(TASKS_IN_DIRS)
- すべてのcファイル名を取得します。
- それらから単純な名前(拡張子なし)とオブジェクト名を作成します。
- 物事を行う
そして重要なのは-すべてが機能しますが、make(すべてのファイルのコンパイルとリンク)を印刷するたびに機能します。何も変更せず、数回続けて変更したとしても、依存関係に何か問題がありますか?
代わりに「blablaは最新です」のようなものを期待していました。