我有以下(非常简化的)Makefile:
# Makefile
MAKESH=shell
USER=$($MAKESH logname)
它旨在将我的登录名存储在USER
变量中,就像$(shell logname)
调用了命令一样。然而,这不会发生。我怀疑这是由于make
评估变量的方式。
有没有人对此或可能的解决方法有更深入的了解,即明确告诉make
这$MAKESH
实际上是shell
命令?
谢谢。
编辑
考虑以下示例:
#parent.mk
...
include child.mk
...
-------------------
#child.mk
export $(shell logname)/path1
export $(shell logname)/path2
-------------------
#bash_script.sh
...
source child.mk
...
(在本例中,采购 child.mk 失败)
本质上,我想做的是创建一个根据当前用户导出路径名的文件。该语法应该对 makefile 和 bash 脚本都有效,因为它可以从两个地方包含/获取。
我还想对这些文件进行细微的更改,因为它们是更大项目的一部分,并且互连有点混乱。
我终于决定这样做:
#parent.mk
...
export logname=$(shell logname)
include child.mk
...
-------------------
#child.mk
export $(logname)/path1
export $(logname)/path2
-------------------
#bash_script.sh
...
source child.mk
...
这很hacky,有点危险,但有效。如果您知道更优雅的方式/方法,请告诉我。
最后,感谢您的解决方案(和您的警告),这些解决方案对预先编辑的问题有效。