makefile 规则无法正常工作

问题描述 投票:0回答:1

代码:

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目录中创建它。

  • GNU Make 4.3
makefile
1个回答
0
投票

这条规则:

$(BUILD_DIR)/$(OBJ): $(BUILD_DIR)/$(OBJS)

扩展为:

build/target: build/test.o sqlist.o

因此,Make 使用内置规则在工作目录中构建

sqlist.o
是非常正确的。

© www.soinside.com 2019 - 2024. All rights reserved.