【发布时间】:2015-01-09 14:55:18
【问题描述】:
ProjFolder
\
Subfolder
sources.cpp
makefile
makefile
Subfolder 应该是一个单独的外部仓库,在签出项目时拉入。当我将make all 调用到顶级makefile 时,将执行以下配方:
all: $(NAME).elf $(NAME).s19 $(NAME).hex
$(NAME).elf: $(OBJECTS) $(LDSCRIPT) Subfolder/lib.a
make -C CppAudioPeriphs all
@ echo "...linking"
$(CC) $(OBJECTS) Subfolder/lib.a $(LDFLAGS) $(LIBS) -o $@
如您所见,如果Subfolder 的最终产品 - 文件lib.a 发生更改,则会调用Subfolder 生成文件以重新制作它,然后所有产品都链接到最终的闪存映像中。
问题在于顺序。 我想总是先调用子makefile。它知道何时以及如何重新制作lib.a。然后检查lib.a是否被修改以确定是否重新制作$(NAME).elf。
这是一种解决方案。
.PHONY all $(NAME).elf
这只是指示make 无论如何都要重新制作 $(NAME).elf。我过去曾在小型项目中使用过这种解决方案,但对于目前的项目,它是不可接受的。
【问题讨论】: