首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Makefile:显式条目工作,通配符%不工作

Makefile:显式条目工作,通配符%不工作
EN

Stack Overflow用户
提问于 2017-05-21 16:13:57
回答 1查看 328关注 0票数 0

我的makefile中有这个规则,但是make没有找到它:

代码语言:javascript
复制
$(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/)

代码语言:javascript
复制
$(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在尝试使用通配符运行时发出的错误消息:

代码语言:javascript
复制
make: *** No rule to make target 'build/rom1.o', needed by 'build/rom1.elf'.  Stop.
EN

回答 1

Stack Overflow用户

发布于 2017-06-02 06:21:03

,让我们简化问题…

如果这是您的文件结构…

代码语言:javascript
复制
.
├── Makefile
└── build
    ├── rom1.bin
    └── rom2.bin

这是你的Makefile…

代码语言:javascript
复制
BUILDDIR := build/

$(BUILDDIR)%.o: $(BUILDDIR)%.bin
    touch $@

然后运行$ make build/rom{1,2}.o,生成的文件结构将是…。

代码语言:javascript
复制
.
├── Makefile
└── build
    ├── rom1.bin
    ├── rom1.o
    ├── rom2.bin
    └── rom2.o
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44099064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档