【发布时间】:2018-11-18 12:00:17
【问题描述】:
Make:取决于目标的可变需求
我有一个Makefile,大致如下:
default: en
.PHONY: default en es
en: NUMBER=number
es: NUMBER=numero
TARGET=$(NUMBER)-word
INTERMEDIATE=$(NUMBER)-tmp
en: number
es: number
number: $(INTERMEDIATE)
touch $(TARGET)
$(INTERMEDIATE):
@echo Please provide file $(INTERMEDIATE)
@exit 1
clean:
rm *-word *-tmp
要使用它,您可以调用make en(也是默认设置)或make es。在我看来,这个 Makefile 有两个主要特点:
- 用户必须提前提供中间要求 (
$(INTERMEDIATE))。 - 此要求是一个变量,其值取决于目标。
当我运行它时,我得到以下信息:
$ make
Please provide file number-tmp
make: *** [-tmp] Error 1
此错误向我表明,对于我的意图而言,变量的解决阶段为时已晚。失败的规则是-tmp,这意味着它在决定运行什么规则时无法告诉$(NUMBER) 的值。但是,它在运行规则时已解决。
那么我怎样才能做到这一点呢?
【问题讨论】:
-
您的问题不清楚。您希望用户如何在
en和es之间进行选择?如果en是默认的,想要es的用户是否应该运行“make es”? -
抱歉,您是对的。我已在问题中添加了使用说明。
标签: makefile