23,110
社区成员
发帖
与我相关
我的任务
分享
MODULES := 目录A 目录B
all:
for module in $(MODULES);do if make -w -C $$module all; then echo "$$module build success";else echo "$$module build error";exit 1; break;fi; done
#在执行上面的动作首次生成子目录的.o文件时在这里打印是空的,而在子目录己经生成.o后,再次执行该makefile
#这里有打印,为什么呢?
echo $(shell find $(MODULES) -name '*.o')
##在执行上面的动作首次生成子目录的.o文件时有打印
find $(MODULES) -name '*.o'
#用wildcard在首次生成子目录的.o文件时,这里打印也是空的
echo $(wildcard */*.o)
#由于首次生成子目录的.o文件时find为空,因此这里报错。 这里应该怎么写?
$(LD) -r -o lib根.o $(shell find $(MODULES) -name '*.o')
LIBS_DIR ?= $(ROOTDIR)/libs
MODULES := 目录A 目录B
SOURCE := $(wildcard 目录A/*.c) $(wildcard 目录A/*.c)
OBJS := $(patsubst %.c,%.o,$(SOURCE))
all:
for module in $(MODULES);do if make -w -C $$module all; then echo "$$module build success";else echo "$$module build error";exit 1; break;fi; done
$(LD) -r -o $(LIBS_DIR)/$(TARGET_NAME) $(OBJS)
clean:
for module in $(MODULES); do if make -w -C $$module clean; then echo "$$module clean success"; else echo "$$module clean error"; break; fi; done
-rm -f ./*.o
-rm -f $(LIBS_DIR)/$(TARGET_NAME)