检查makefile宏中定义的变量
我在让GNU Makefile宏按我希望的方式工作时遇到了一些问题。这是我的测试:检查makefile宏中定义的变量,makefile,macros,gnu-make,Makefile,Macros,Gnu Make,我在让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))))
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在其Makefiles中所做的非常相似:
有人知道我的问题出在哪里吗?您需要在宏定义中转义make函数,即
define add_ext
ifndef $(1)
$$(error $(1) not defined)
endif
$(1)_EXT = $(1).extended
endef
此外,在您的:
ifndef $(1)
$(error $(1) not defined)
endif
我不知道$(error…
是用制表符还是空格缩进的,但是
不能缩进制表符,所以最好不要缩进。Aw shot,它必须是这么简单的东西。谢谢