Makefile如何生成q_前缀匹配目标以执行对应qemu elf文件命令
Makefile实现方案
方案1:有限目标硬编码实现
适合目标数量少、长期固定的场景,逻辑直白易修改:
# 单条规则对应单个目标 q_a: qemu aarch64/a/a.elf q_b: qemu aarch64/b/b.elf q_c: qemu aarch64/c/c.elf # 声明伪目标,避免和同名文件冲突 .PHONY: q_a q_b q_c
方案2:通用模式匹配实现(无数量限制,推荐)
利用Make的通配符和自动变量实现任意目标匹配,不需要新增规则就可以支持任意q_xxx格式的目标:
# 匹配所有q_开头的目标,%为通配符 q_%: aarch64/%/%.elf qemu $< # 声明所有q_开头的目标为伪目标 .PHONY: q_%
规则说明:
%是Make的通配符,输入make q_xxx时,%会自动匹配xxx部分$<是自动变量,指代规则的第一个依赖,也就是对应路径下的aarch64/xxx/xxx.elf文件- 只要对应路径下的elf文件存在,直接执行
make q_你的目标名即可运行,无需修改Makefile
注意事项
- Makefile中规则对应的命令行必须以Tab开头,不能用空格替代,否则会触发语法错误
- 如果需要给qemu追加全局参数(比如
-nographic),直接在qemu $<后添加即可
内容的提问来源于stack exchange,提问作者Chan Kim
相关产品推荐
相关产品推荐

