【问题标题】:Makefile environment based on targets基于目标的 Makefile 环境
【发布时间】:2019-04-04 08:04:32
【问题描述】:

此代码不起作用:

$ cat Makefile
dev:
        AWS_PROFILE=foobar-$@ echo $$AWS_PROFILE

demo:
        AWS_PROFILE=foobar-$@ echo $$AWS_PROFILE

根据我的目标,我希望为目标中的命令正确设置 AWS_PROFILE。如何使用GNU Make 4.2.1 实现这一目标?

【问题讨论】:

  • 您是否尝试在echo 命令前添加分号?
  • 行得通!但是下一行呢,或者下一个命令需要是;隔在一条长线上?
  • this 问题的可能重复项。
  • @AmeyaVS 不,这不是关于制作变量的问题
  • @hendry 您可以使用续行符 (``) 来打断长行。例如,请参阅我的答案。

标签: makefile


【解决方案1】:

echo 命令前添加分号:

dev:
    AWS_PROFILE=foobar-$@; echo $$AWS_PROFILE

配方的每一行都发送到不同的外壳。所以,如果你想传播 shell 变量,你必须在同一行,在同一个 shell 列表中定义和使用它们。您还可以使用&&|| 来加入您的各个shell 命令。

请注意,为了更好的可读性,您可以使用续行:

dev:
    AWS_PROFILE=foobar-$@; \
    echo $$AWS_PROFILE

【讨论】:

    猜你喜欢
    • 2011-03-23
    • 2021-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-02
    • 2016-05-23
    相关资源
    最近更新 更多