Makefile环境变量中的美元 [英] Dollars in Makefile environment variables
问题描述
是否可以在某个部分的 Makefile
中禁用变量扩展?
这是一个我遇到的问题的例子:
print_command:
@echo'$ (COMMAND)'
这里是我得到的输出:
$ export COMMAND ='我最喜欢的shell是$ SHELL'
$ make print_command
我最喜欢的shell是HELL
$ make print_command COMMAND ='欢迎使用$ SHELL'
欢迎来到HELL
我想要得到的:
$ export COMMAND ='我最喜欢的shell是$ SHELL'
$ make print_command
我最喜欢的shell是$ SHELL
$ make print_command COMMAND ='欢迎来到$ SHELL'
欢迎来到$ SHELL
是否可以这样做使用这样的双重美元:
$ export COMMAND ='我最喜欢的shell是$$ SHELL '
$ make print_command
我最喜欢的shell是$ SHELL
$ make print_command COMMAND ='欢迎使用$ SHELL'
欢迎来到$ SHELL
这是最简单的形式,我正在转发变量的确切内容 COMMAND
make
将其调整。
添加 $$
双元,双引号。
print_command:
@echo$$ COMMAND
喜欢,
COMMAND ='我最喜欢的shell是$ SHELL'; $ $ $ $ $ make print_command
我最喜欢的shell是$ SHELL
查看这个 如何使用变量
页面从 GNU
make页面。
如果您只需添加单引号, make
直接打印出变量: -
eg与
print_command:
@echo'$$ COMMAND'
$ export COMMAND ='我最喜欢的外壳是$ SHELL'; make print_command
$ COMMAND
因为 $
在Makefile中具有特殊的含义,需要进行转义。如果您需要 make
来扩展定义的变量的值,请使用值
语法为
print_command:
@echo $(value COMMAND)
$ export COMMAND ='我最喜欢的shell是$ SHELL' make print_command
我最喜欢的shell是/ bin / bash
在上述情况下,值的环境变量被扩展到 / bin / bash
。
Is it possible to "disable" variable expansion in my Makefile
for a certain section?
Here's an example of the issue I'm having:
print_command:
@echo '$(COMMAND)'
And here's the output I'm getting:
$ export COMMAND='My favourite shell is $SHELL'
$ make print_command
My favourite shell is HELL
$ make print_command COMMAND='Welcome to $SHELL'
Welcome to HELL
And what I would like to get:
$ export COMMAND='My favourite shell is $SHELL'
$ make print_command
My favourite shell is $SHELL
$ make print_command COMMAND='Welcome to $SHELL'
Welcome to $SHELL
Is it possible to do this without using a double dollar like so:
$ export COMMAND='My favourite shell is $$SHELL'
$ make print_command
My favourite shell is $SHELL
$ make print_command COMMAND='Welcome to $$SHELL'
Welcome to $SHELL
In it's simplest form I'm looking to forward the exact contents of the variable COMMAND
without make
mangling it.
Add a $$
double-dollar and double-quote it.
print_command:
@echo "$$COMMAND"
Like,
$ export COMMAND='My favourite shell is $SHELL'; make print_command
My favourite shell is $SHELL
Check out this How to Use Variables
page from the GNU
make page.
If you just add a single-quote, make
literally prints out the variable:-
e.g. with
print_command:
@echo '$$COMMAND'
$ export COMMAND='My favourite shell is $SHELL'; make print_command
$COMMAND
Because $
carries a special meaning in Makefile and that needs to be escaped. If you need make
to expand the value for the variable defined, use a value
syntax as
print_command:
@echo $(value COMMAND)
$ export COMMAND='My favourite shell is $SHELL'; make print_command
My favourite shell is /bin/bash
In the above case, the value of environment variables being expanded to /bin/bash
.
这篇关于Makefile环境变量中的美元的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!