2017-06-17 111 views
0

如何使用make的模式特定变量值功能https://www.gnu.org/software/make/manual/html_node/Pattern_002dspecific.html#Pattern_002dspecific定义多个变量?例如,假设LIBDIRRPATH已经被定义,我想设置如下:make:使用模式特定变量值定义多个变量

LDFLAGS += -L$(LIBDIR) $(RPATH) 
LDLIBS += -lsomelibrary 

用于建立与该模式匹配utest%。因此,例如,

utest% : -L$(LIBDIR) $(RPATH) 

会让我半途而废,但那么如何定义第二个变量?


我认为可能使用多行变量https://www.gnu.org/software/make/manual/html_node/Multi_002dLine.html会工作,但我不能完全达到那里。我已经试过:

define linking_vars := 
LDFLAGS := -L$(LIBDIR) $(RPATH) 
LDLIBS := -lsomelibrary 
endef 

utest% : $(linking_vars) 

define newline = 

endef 

utest_% : LDFLAGS := -L$(LIBDIR) $(RPATH) $(newline) LDLIBS := -lsomelibrary 

但我没有任何运气呢。

回答

1

我不完全明白你想要做什么,但它听起来就好像这能做到这一点:

utest% : LDFLAGS += -L$(LIBDIR) $(RPATH) 
utest% : LDLIBS += -lsomelibrary 
+0

是的,我正在比它需要的是这个更难!我阅读文档的方式虽然这使得按照它们在makefile中出现的顺序读取相同词根长度的第一个匹配,但事实上,它按照它们发生的顺序读取了相同词根长度的匹配_all_在makefile中。感谢您向我展示灯光! – dpritch