【问题标题】:how to get a particular dependency from the dependency list for a target如何从目标的依赖项列表中获取特定的依赖项
【发布时间】:2011-04-06 03:26:35
【问题描述】:

假设我在 Makefile 中有以下规则:

%.foo: %.bar %.spam %.bot
<tab> echo "hello1" > $<

我怎样才能将“hello2”回显到第二个依赖项(但不是 .bot 文件),即 .spam 文件中?谢谢

【问题讨论】:

标签: makefile


【解决方案1】:
%.foo: %.bar %.spam %.bot
    echo "hello1" > $<    
    echo hello2 > $(word 2,$^)

(请注意,&gt; 至少在我知道的 shell 中会覆盖,这使得整个练习毫无意义。要追加,请使用 &gt;&gt;。)

【讨论】:

    【解决方案2】:

    你的问题与 make 的正常操作相反:规则应该修改冒号 left 上命名的文件,而不是 right 上的文件> 结肠。你在这里没有给出太多的背景信息,所以很难给你比这更具体的建议。

    就您提出的特定问题而言,您可以使用以下内容:

    %.foo: %.bar %.spam %.bot
        echo "hello1" > $<
        echo "hello2" > $*.spam
    

    这使用了$* 自动变量,它被定义为与模式规则中的% 字符匹配的文件名部分。

    【讨论】:

    • 是的。我将 Makefile 用于其他目的,而不是用于编译。我发现了 Beta 建议的方式,但我更喜欢你的方式。很整洁。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-30
    • 1970-01-01
    • 2014-09-06
    • 2017-12-27
    • 2021-06-24
    • 1970-01-01
    相关资源
    最近更新 更多