通过Makefile变量执行批处理脚本的问题排查
问题描述
我原本通过批处理脚本运行可执行文件,现在需要改为通过Makefile执行该批处理脚本。
参考批处理脚本
@echo off start name.exe
前期测试的成功写法
- 直接定义
run目标,执行make run时正常运行,且生成日志文件:
run: @cmd /C "$(CURDIR)\name.bat"
- 通过变量关联
all目标,执行make all时运行正常,能生成日志文件并将目标文件移至指定位置:
run: @cmd /C "$(CURDIR)\name.bat" MOVE:=run .PHONY: all all: $(MOVE)
扩展到主Makefile时的异常
将上述逻辑整合到主Makefile(简化版本如下)后,执行make all时,其余步骤均正常,但关联批处理脚本的run目标并未执行:
run: @cmd /C "$(CURDIR)/move.bat" FILE_LIST = BASE_SW MOVE:= run FILE_LIST:= BASE_SW # 存放文件的目录 LIB_FILE:= $(FILE_LIST).a $(LIB_FILE): $(MOVE) $(other dependency) @mkdir-mingw -p $(dir name) @$(AR) cr $(LIB_FILE_APP) $(ALL_OBJS_APP) .PHONY:all all: $(LIB_FILE)
核心需求
需要让如下结构的Makefile成功执行批处理脚本:
run: @cmd /C "$(CURDIR)/move.bat" MOVE:= run LIB_FILE:= $(FILE).a $(LIB_FILE): $(MOVE) $(Other dependencies) recipe .PHONY: all all: $(LIB_FILE)
内容的提问来源于stack exchange,提问作者Yashas Vinay
相关产品推荐
相关产品推荐

