【问题标题】:Record current target in Makefile在 Makefile 中记录当前目标
【发布时间】:2011-07-13 22:58:00
【问题描述】:

目前我有一个带有多目标规则的 Makefile。它记录目标,然后使用该目标集调用新的 Make。

例如

$(LIST_OF_PRODUCTS) : 
     @echo Making $@
     @make build_product PRODUCT=$@

输出目录和二进制然后使用这个产品名称..

如何在不调用新的 Make 实例的情况下,在多目标规则中记录当前正在构建的目标?

我试过了:

$(LIST_OF_PRODUCTS) : PRODUCT := $@
$(LIST_OF_PRODUCTS) : build_product
      @echo Making $(PRODUCT) Done.

但这不起作用。

【问题讨论】:

  • 根据您希望在build_product 中实现的目标,您可以使用define 为规则创建某种模板,然后您可以使用@987654325 的组合调用它@ 和 $(call ...).

标签: build makefile gnu-make


【解决方案1】:

我想出的最好的是 GNU make 模板方法:

#
# Template for creating a target
define target-template
.PHONY : ${1}
${1} : TARGET_NAME:=${1}
${1} : check_target $$(OBJECTS)
endef

#
#Generate targets from template
$(foreach target,$(TARGET_LIST),$(eval $(call target-template,$(target))))

但是,它只是将我的问题推到了其他地方。因为 check_target 只在通过组调用目标​​时调用一次?

例如

all : target_a target_b

【讨论】:

  • 目前还不清楚您要达到什么目的。我有一种感觉,它可以做得更简单。
猜你喜欢
  • 2013-11-27
  • 1970-01-01
  • 2017-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-18
  • 2013-08-10
相关资源
最近更新 更多