2016年3月7日 星期一

makefile 裡面的 $(1)

按照字面上理解就是

弟一個傳進來的 argue

不過還是很抽象  就舉下列例子說明
/////// 我是 makefile ////////
define include-path-for 
$(foreach n,$(1),$(patsubst $(n):%,%,$(filter $(n):%,$(pathmap_INCL))))
endef
/////// makefile 節數//////

我們在makfile 裡面 定義一個  工具

在別的 makefile 我們利用call去呼叫他


////////////// 我是另外一個 malefile ///////
LOCAL_C_INCLUDES:= \
$(call include-path-for, dbus)
/////// makefile 結束//////



這邊就可以得知  對 nclude-path-for 這個 工具而言  第一個 arguement 就是 dbus
他就會傳進去 define 裡面中的 $(1)



詳細 的出處在下面 :



define include-path-for  #定义命令包, n 由调用者传递进来, 这个在 build/core/pathmap.mk
$(foreach n,$(1),$(patsubst $(n):%,%,$(filter $(n):%,$(pathmap_INCL))))
endef
// pathmap_INCL 在 build/core/pathmap.mk 文件中有定义,最后使用的时候可以看到


【函数内实现的解析】
foreach 遍历, patsubst 字符串替换, filter 过滤函数


【函数调用】
这里以external\dbus\bus 下的Android.mk 调用为例:
...
LOCAL_C_INCLUDES:= \
$(call include-path-for, dbus)

沒有留言:

張貼留言