GNU Make配置异常求助:无法生成双目标及关联test依赖执行
Makefile配置问题的解决方法
问题根源
- 默认执行
make只生成单个文件:Makefile的默认行为是执行第一个定义的目标,你当前的第一个目标是flash_data.flash,所以只会生成这一个文件。 make test不触发文件构建:test目标没有声明依赖flash_data.flash和flash_data1.flash,Make会认为无需先构建这两个文件,直接执行测试输出。
修改后的Makefile
DATA_DIR = ../support/flash_data SRC = $(DATA_DIR)/flash_data.flash # 默认目标:执行make时生成两个flash文件 all: flash_data.flash flash_data1.flash flash_data.flash: config.mk cp $(SRC) $@ flash_data1.flash: config.mk cp $(SRC) $@ # test依赖两个flash文件,执行时会先确保文件已生成(config.mk变更时自动重建) test: flash_data.flash flash_data1.flash @echo --- test
修改说明
- 添加
all作为第一个目标,让它依赖两个.flash文件,这样默认执行make时会同时构建这两个文件。 - 给
test目标添加依赖项,当执行make test时,Make会先检查两个.flash文件是否需要更新(包括config.mk变更的情况),完成构建后再执行测试输出。
内容的提问来源于stack exchange,提问作者fjordan
相关产品推荐
相关产品推荐

