【问题标题】:Have GNU make re-evaluate what is returned by $(shell ...)让 GNU 重新评估 $(shell ...) 返回的内容
【发布时间】:2013-02-11 08:04:32
【问题描述】:

这是我的 makefile 中的一个 sn-p:

main_DEPS = $(TARGETS_$(d)/classes/player) $(TARGETS_$(d)/classes/monster)

它将 main_DEPS 设置为其他两个变量的扩展版本。
这可以正常工作。


如何替换:

$(TARGETS_$(d)/classes/player) $(TARGETS_$(d)/classes/monster)

使用提供相同输出的程序?

我试过了:

main_DEPS = $(shell program)

但它似乎将main_DEPS 设置为等于字符串值$(TARGETS_$(d)/classes/player) $(TARGETS_$(d)/classes/monster),而不是扩展版本。

我也试过了:

main_DEPS = $(eval $(shell program))  
main_DEPS = $(value $(shell program))  
main_DEPS = $(value $(eval $(shell program)))   
main_DEPS = $(eval $(value $(shell program)))   

【问题讨论】:

    标签: bash shell makefile gnu-make


    【解决方案1】:

    你试过了吗:

    $(eval main_DEPS = $(shell program))
    

    这里,eval(带有shell的内部表达式)的参数被扩展以获得要评估的语句:

    main_DEPS = $(TARGETS_$(d)/classes/player) $(TARGETS_$(d)/classes/monster)
    

    如果我理解正确的话,这应该正是你想要的。

    【讨论】:

      猜你喜欢
      • 2019-05-14
      • 1970-01-01
      • 2018-01-11
      • 2011-05-06
      • 2020-08-19
      • 2011-05-05
      • 1970-01-01
      • 1970-01-01
      • 2019-05-30
      相关资源
      最近更新 更多