代码:
CC = gcc
RM = rm
OBJ = target
OBJS = test.o sqlist.o
BUILD_DIR = build
$(BUILD_DIR)/$(OBJ): $(BUILD_DIR)/$(OBJS)
$(CC) -o $@ $^
$(BUILD_DIR)/test.o: test.c
$(CC) -c $^ -o $@
$(BUILD_DIR)/sqlist.o: sqlist.c
$(CC) -c $^ -o $@
clean:
$(RM) -rf $(BUILD_DIR)/*
.PHONY: clean
我的问题是:makefile文件没有在build目录中生成sqlist.o而是在makefile目录中创建它。
这条规则:
$(BUILD_DIR)/$(OBJ): $(BUILD_DIR)/$(OBJS)
扩展为:
build/target: build/test.o sqlist.o
因此,Make 使用内置规则在工作目录中构建
sqlist.o
是非常正确的。