我的makefile中有这个规则,但是make没有找到它:
$(BUILDDIR)%.o : $(BUILDDIR)%.bin
@echo
$(OBJCOPY) -I binary -O elf32-avr --redefine-sym _binary_$*_bin_start=$* --redefine-sym _binary_$*_bin_end=$*_end $< $@如果我将其显式化,make将使用它们(调用build/rom1.o和build/rom2.o;BUILDDIR=build/)
$(BUILDDIR)rom1.o : $(BUILDDIR)rom1.bin
@echo
$(OBJCOPY) -I binary -O elf32-avr --redefine-sym _binary_rom1_bin_start=rom1 --redefine-sym _binary_rom1_bin_end=rom1_end $< $@
$(BUILDDIR)rom2.o : $(BUILDDIR)rom2.bin
@echo
$(OBJCOPY) -I binary -O elf32-avr --redefine-sym _binary_rom2_bin_start=rom2 --redefine-sym _binary_rom2_bin_end=rom2_end $< $@有人在我的第一次尝试中暗示通配符有什么问题吗?
编辑:在Ubuntu16.04上运行的make版本是4.1。这是make在尝试使用通配符运行时发出的错误消息:
make: *** No rule to make target 'build/rom1.o', needed by 'build/rom1.elf'. Stop.发布于 2017-06-02 06:21:03
,让我们简化问题…
如果这是您的文件结构…
.
├── Makefile
└── build
├── rom1.bin
└── rom2.bin这是你的Makefile…
BUILDDIR := build/
$(BUILDDIR)%.o: $(BUILDDIR)%.bin
touch $@然后运行$ make build/rom{1,2}.o,生成的文件结构将是…。
.
├── Makefile
└── build
├── rom1.bin
├── rom1.o
├── rom2.bin
└── rom2.ohttps://stackoverflow.com/questions/44099064
复制相似问题