我正在为项目编写makefile框架。说,我在顶部目录中有一个main.c,并且每个子目录都包含一个C文件。要链接所有目标文件togoter,我在顶部makefile中分配一个初始值:
export TARGET_LIST := main.o
在每个子目录中,我将它们附加到列表中:
# sub1/Makefile
TARGET := a.o
TARGET_LIST += $(TARGET)
当返回顶部目录时,TARGET_LIST仍然使用main.o.我确定所有子目录都已输入。有没有好办法呢?
顶级makefile:
all: main
export TOP_DIR = $(shell pwd)
export TARGET_LIST := main.o
SUBDIRS := a b c d
CFLAGS := -Iinc
all:main
main:main.o subdirs
cc $(TARGET_LIST) -o $@ $(CFLAGS)
subdirs: $(patsubst %, _dir_%, $(SUBDIRS))
$(patsubst %, _dir_%, $(SUBDIRS)) :
$(MAKE) -C $(patsubst _dir_%, %, $@) $(TGT)
Rules.make:
all:$(TARGET)
%.o:%.c
@echo $(TARGET_LIST)
$(CC) -c $^ -o $@ $(CFLAGS) $(LDFLAGS)
subdir makefile:
TARGET := a.o
TARGET_LIST += $(TARGET)
CFLAGS :=
LDFLAGS :=
include $(TOP_DIR)/Rules.make