【问题标题】:How to do pattern substitution in Makefile?如何在 Makefile 中进行模式替换?
【发布时间】:2015-06-02 06:44:53
【问题描述】:

我有包含以下命令的脚本文件:

#!/bin/sh
val=echo $(PWD%/*)
val=${val##*/}
echo ${val}

如果我有一条路径说 a/b/c/d/e/f 它会输出为“e”
我的 make 文件中需要这个输出来编译特定的包,这里是“e”。但是如何在我的 makefile 中调用这些命令呢?

【问题讨论】:

  • 你确定你的 shell 脚本输出为 e 吗?
  • 是的..即使它没有给出问题也不是问题。我想知道有什么方法可以在 makefile 中调用我的脚本命令
  • 否; val=echo $(PWD) 尝试运行 Make 变量 PWD 中的命令,同时将 shell 变量 val 临时设置为字符串 echo。据推测,OP 实际上想要 val='$(PWD)'
  • PWD 不是 make 变量

标签: shell makefile gnu-make


【解决方案1】:

Make 内置了filename manipulation functions;使用

更容易获得所需的结果
$(basename $(dirname $(PWD)))

在 GNU Make 中。

一般情况下,您可以使用$(shell) 函数来运行任意shell 命令并收集它们的输出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-06
    • 2017-12-30
    • 2012-05-16
    • 2023-03-27
    • 2014-05-24
    • 2021-08-28
    • 1970-01-01
    相关资源
    最近更新 更多