2014-08-27 48 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