【问题标题】:Passing Makefile pattern in multiple targets to dependency将多个目标中的 Makefile 模式传递给依赖项
【发布时间】:2021-09-18 05:33:54
【问题描述】:

我正在尝试根据 Makefile 中的实例化目标来匹配依赖项。

我希望这段代码可以工作,但它没有。

a b: $@.test

*.test:
  echo $@

我希望make a 输出a.test

另外,如何访问* 部分并简单地输出a

【问题讨论】:

    标签: makefile


    【解决方案1】:

    您为什么希望它起作用?

    首先,您不能在像a b: $@.test 这样的先决条件列表中使用$@;自动变量是only defined inside recipes,不在先决条件列表中。所以它是空的。

    其次,当 make 解析你的 makefile 时,它​​会扩展 *.test 通过查找磁盘上与该模式匹配的所有文件,并且可能没有任何文件(因为你还没有构建它们)所以这将扩展到空字符串。

    基本上你的makefile和你写的一样:

    a b: .test
    
    :
            echo $@
    

    如果您希望make a 输出a.test,您可以使用static-pattern rules 来执行此操作,如下所示:

    a b : % : %.test
    
    %.test:
            echo $@
    

    如果您只想要匹配模式use $* 而不是$@ 的部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-18
      • 1970-01-01
      • 2012-02-08
      • 2016-10-08
      • 2015-02-24
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多