# 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文件是否存在。
发布于 2018-06-07 03:23:23
如果不在makefile中设置SHELL
变量,显式which
会起作用吗?
设置SHELL
变量只会影响配方。它不用于$(shell ...)
函数。您可以使用:
my_var := $(shell /bin/bash -c 'which function')
然而,在我的系统上,即使使用默认的外壳也可以与which
一起工作。也许你的系统不知何故变了。
请注意,当然,which
查找的是程序,而不是函数...
https://stackoverflow.com/questions/50727687
复制相似问题