2014-08-27 93 views
1

我在makefile文件以下两个列表:合并两个列表中的Makefile

SERVERS=172.16.0.117 172.16.0.147 
PORTS=1600 1601 

我希望新的列表如下

172.16.0.117-1600 172.16.0.17-1601 172.16.0.147-1600 172.16.0.147-1601 

我不知道我做错了。你能帮我解决吗?请看makefile源代码和输出。提前致谢。

Makefile文件的源代码:

SERVERS=172.16.0.117 172.16.0.147 
PORTS=1600 1601 

SERVER=$(addprefix Connect-to-, $(SERVERS)) 
PORT=$(addprefix $(SERVER)-, $(PORTS)) 

testall: 
     echo "PORTS - $(PORT)" 

Output of makefile: 
#make 
echo "PORTS - Connect-to-172.16.0.117 Connect-to-172.16.0.147-1600 Connect-to-172.16.0.117 Connect-to-172.16.0.147-1601" 
PORTS - Connect-to-172.16.0.117 Connect-to-172.16.0.147-1600 Connect-to-172.16.0.117 Connect-to-172.16.0.147-1601 
+0

'addprefix'采用单个前缀而不是前缀列表。所以这是取$'(SERVER)'的整个值,并将其预先加入到'$(PORTS)'中的每个单词中。 – 2014-08-27 14:21:54

+0

只是要额外清除您的输出有端口 - “连接到172.16.0.117连接到172.16.0.147-1600”“连接到172.16.0.117连接到172.16.0.147-1601” – 2014-08-27 14:23:38

回答

1

像这样的事情?

PORT := $(foreach p,$(PORTS),$(patsubst %,%-$p,$(SERVERS))) 
+0

感谢它为我工作。 – ashinde 2014-08-27 17:19:14