Makefile 如何在make中拆分字符串?

Makefile 如何在make中拆分字符串?,makefile,gnu-make,Makefile,Gnu Make,我需要在Makefile中获取一个参数,该参数由表单中的主机标识符组成 host[:port] 其中冒号和端口是可选的。因此,以下各项均有效: foo.example.com ssl.example.com:443 localhost:5000 等等 我想拆分可选冒号上的字符串并将值分配给变量,以便HOST包含foo.example.com、ssl.example.com、localhost等,而端口分别包含80(默认端口)、443和500 # Retrieves a host part o

我需要在Makefile中获取一个参数,该参数由表单中的主机标识符组成

host[:port]
其中冒号和端口是可选的。因此,以下各项均有效:

foo.example.com
ssl.example.com:443
localhost:5000
等等

我想拆分可选冒号上的字符串并将值分配给变量,以便
HOST
包含
foo.example.com
ssl.example.com
localhost
等,而
端口分别包含80(默认端口)、443和500

# Retrieves a host part of the given string (without port).
# Param:
#   1. String to parse in form 'host[:port]'.
host = $(firstword $(subst :, ,$1))

# Returns a port (if any).
# If there is no port part in the string, returns the second argument
# (if specified).
# Param:
#   1. String to parse in form 'host[:port]'.
#   2. (optional) Fallback value.
port = $(or $(word 2,$(subst :, ,$1)),$(value 2))
用法:

$(call host,foo.example.com) # foo.example.com
$(call port,foo.example.com,80) # 80

$(call host,ssl.example.com:443) # ssl.example.com
$(call port,ssl.example.com:443,80) # 443