2011-12-16 44 views
19

私は、フォームコロンとポートがオプションであるmakeで文字列を分割するにはどうすればいいですか?

host[:port] 

でホスト識別子で構成され、私のMakefileのパラメータを取る必要があります。だから、次のすべてが有効です。

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

など

私は、オプションのコロンの文字列を分割し、変数に値を割り当てたいHOSTが含まれているのでfoo.example.comssl.example.comlocalhostなど、PORTにはそれぞれ80(デフォルトポート)、443、および500が含まれています。

答えて

34
# 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 
関連する問題