2014-08-27 2 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)'. –

+0

Просто для того, чтобы быть более четким, вы получаете «ПОРТЫ» - «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» ' –

ответ

1

Что-то вроде этого?

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

Спасибо, что это сработало для меня. – ashinde

Смежные вопросы