Makefile环境变量中的美元 [英] Dollars in Makefile environment variables

查看:178
本文介绍了Makefile环境变量中的美元的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否可以在某个部分的 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆