0
即使文件夹中已有$(HDAIMG)文件,我的配方$(HDAIMG)也始终处理完毕。 我在做什么错?始终处理Makefile规则
HDAIMG := $(TESTDIR)/$(PROJECT)-hda.img
HDAIMG值,实际上,是检验/项目hda.img
PHONY: $(PROJECT)
all: $(PROJECT) $(HDAIMG)
$(PROJECT): check-env
$(call v_exec, 1, $(MAKE) -C $(SRCDIR) [email protected])
$(HDAIMG): $(PROJECT) check-env
$(call print_white_init, HDAIMG)
$(call print, Creating [email protected])
$(call v_exec, 2, dd if=/dev/zero [email protected] count=0 bs=1 seek=$(HDAIMGSIZE) &> /dev/null)
$(call print, Partitioning [email protected])
$(call v_exec, 2, parted --script [email protected] mklabel msdos mkpart primary ext4 1 100%)
$(call print, Creating [email protected] device maps)
$(call v_exec, 2, sudo kpartx -a [email protected] -s)
$(call v_exec, 2, sudo mkfs.ext4 /dev/mapper/loop0p1 -q)
$(call v_exec, 2, sudo mount /dev/mapper/loop0p1 $(TESTDIR)/mnt)
$(call v_exec, 2, sudo umount $(TESTDIR)/mnt)
$(call v_exec, 2, sudo kpartx -d [email protected])
$(call print_white_done, HDAIMG)
check-env:
ifneq ($(ERROR),)
$(call print_error, $(ERROR))
exit 1
endif
即调用的函数使用具有彩色打印或具有详细选用来执行;在我的Makeconfig.mk中已经包含了。一些:
v_exec = $(V$(strip $(1)))$(strip $(2))
print = @echo -e '$(LEAD_SUB_STR) $(strip $(1))'
print_white_init= @echo -e '$(subst PATTERN,$(strip $(1)),$(WHITE_INIT)) $(strip $(2))'
print_white_done= @echo -e '$(subst PATTERN,$(strip $(1)),$(WHITE_DONE)) $(strip $(2))'
Beta,你说得对。非常感谢你。 –
@geyslan请接受这个答案,如果它帮助你解决你的问题。 – Chnossos