如何在Makefile中根据命令输出结果设置变量替代值?
Makefile 条件变量设置方案
针对你遇到的my_command在部分环境无权限、甚至不存在导致变量不符合预期的问题,可以通过以下方式实现条件赋值:
# 先获取my_command的输出,同时处理命令不存在/执行失败的情况 MY_COMMAND_OUTPUT := $(shell if command -v my_command >/dev/null 2>&1; then my_command; else echo ""; fi) # 根据输出结果设置my_var ifeq ($(MY_COMMAND_OUTPUT), DESIRED_VALUE) my_var := "desired value2" else my_var := "desired value1" endif # 导出变量到子进程 export my_var test: command $(my_var)
关键说明:
- 命令存在性检查:用
command -v my_command判断命令是否存在,避免命令不存在时make抛出错误;如果命令存在则执行它,否则输出空字符串。 - Makefile条件判断:使用原生的
ifeq语法对比输出值和预期的DESIRED_VALUE,符合预期则赋值为desired value2,否则赋值为desired value1。 - 变量导出:在条件赋值完成后统一
export,确保变量能传递给test目标里的子进程。
内容的提问来源于stack exchange,提问作者N. J
相关产品推荐
相关产品推荐

