【发布时间】:2017-03-08 17:26:24
【问题描述】:
我在让 GNU Makefile 宏按我希望的方式工作时遇到了一些麻烦。这是我的测试:
TEST1 = defined
#TEST2 = defined
define add_ext
ifndef $(1)
$(error $(1) not defined)
endif
$(1)_EXT = $(1).extended
endef
TESTS = TEST1 TESTS2
$(foreach test,$(TESTS),$(eval $(call add_ext,$(test))))
all:
@echo TEST1: $(TEST1), $(TEST1_EXT)
@echo TEST2: $(TEST2), $(TEST2_EXT)
宏应该接受一个变量的名称,宏首先检查它是否已经定义,然后创建一个关联的变量。
鉴于我已注释掉 TEST2,我预计这会在 TEST2 上失败。但这是错误信息:
Makefile:15: *** TEST1 not defined. Stop.
这与 Buildroot 在其 Makefile 中所做的非常相似: https://git.buildroot.net/buildroot/tree/package/pkg-generic.mk#n409
有人知道我的麻烦在哪里吗?
【问题讨论】: