在阅读了关于非递归 makefile 的 Emile van Bergen 文章后,我试图从递归转向非递归,但似乎我做得不对。
更新:我终于做对了
这些文件是:
$ ls -R
.:
folder1 Makefile test.c topRules.mk
./folder1:
file.c Rules.mk
测试.c
extern void sub_print();
void main()
{
printf("Top Hello\r\n");
sub_print();
}
生成文件
TARGET = test.exe
.PHONY: all
all: $(TARGET)
include topRules.mk
dir = folder1
include folder1/Rules.mk
$(TARGET): test.o $(OBJS_folder1)
$(LINK)
顶级规则.mk
COMPILE = $(CC) $(CFLAGS) -o $@ -c $<
LINK = $(CC) -o $@ $^
%.o: %.c
$(COMPILE)
文件夹 1/Rules.mk
sp := $(sp).x
dirstack_$(sp) := $(d)
d := $(dir)
OBJS_$(d) := $(d)/file.o
$(d): $(OBJS_$(d))
文件夹 1/file.c
void sub_print()
{
printf("Hello Sub World\r\n");
}