首页 > 解决方案 > Make:变量无法从 shell 调用分配

问题描述

# makefile

SHELL:=/bin/bash
PATH:=/path/to/new/programs:$(PATH)


my_var:=$(shell which program)

rule:
    echo $(my_var)
    which program

#output
$: make rule

echo 

which program
/path/to/program

# prints nothing

我已经尝试了所有方法,实际上还记得在我之前创建 makefile 时让它工作。它正在变成一个泥潭——我需要做的就是在安装之前检查一个 exe 是否存在。

标签: c++makefilegnu-make

解决方案


which如果您不在SHELLmakefile中设置变量,显式是否有效?

设置SHELL变量仅影响配方。它不用于该$(shell ...)功能。您可以使用:

my_var := $(shell /bin/bash -c 'which function')

但是在我的系统上,即使使用默认 shell 也可以使用which. 也许您的系统以某种方式有所不同。

注意当然会which找到程序,而不是功能......


推荐阅读