Sev*_*yev 19 cygwin makefile android-ndk
与此问题直接相关.如何使includemakefile中的指令相对于当前脚本的位置?
假设当前路径是任意的,您无法控制它.只有makefile位置是已知的.你的makefile不是根文件 - 它包含在内.这就是Android NDK的确切方式.
是否有一个内置变量与当前的makefile名称?我可以从中删除文件名,只留下路径吗?在Cygwin上使用make 3.81.
Eld*_*mov 17
您可以从MAKEFILE_LIST内置变量获取当前正在处理的makefile的名称.
鉴于当前的makefile是已包含的最后一个(换句话说,include自当前脚本开始以来你没有使用另一个指令),脚本本身的路径将是:
SELF_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
Run Code Online (Sandbox Code Playgroud)
现在你可以在同一个目录中包含一个脚本(注意没有斜杠,它已被添加$(dir ...)):
include $(SELF_DIR)another.mk
Run Code Online (Sandbox Code Playgroud)
注意:在GNU Make 3.80中没有lastword内置函数.在这种情况下,您可以按如下方式实现它,替换$(lastword ...)为$(call lastword,...):
lastword = $(if $(firstword $1),$(word $(words $1),$1))
Run Code Online (Sandbox Code Playgroud)
小智 6
是否有一个内置变量与当前的makefile名称?
是的,有,使用$ {CURDIR}.这是顶级Makefile所在的目录,因此您无需从中删除任何内容.
http://www.gnu.org/software/make/manual/make.html#Recursion
| 归档时间: |
|
| 查看次数: |
18447 次 |
| 最近记录: |