在现有的GNU使构建系统的树,我想看看makefile文件的树包括。我该怎么做?像Do you know tool building tree of include files in project\file?,但是对于GNU Make而不是C和C++。获得包括GNU的makefile
一个相关但略有不同的能力,我会感兴趣的:能够把$(信息...)语句在生成文件,并将它打印出回溯的包括对信息的语句。
在现有的GNU使构建系统的树,我想看看makefile文件的树包括。我该怎么做?像Do you know tool building tree of include files in project\file?,但是对于GNU Make而不是C和C++。获得包括GNU的makefile
一个相关但略有不同的能力,我会感兴趣的:能够把$(信息...)语句在生成文件,并将它打印出回溯的包括对信息的语句。
如果你只是想包括makefile文件的列表,$(info Included files: ${MAKEFILE_LIST})
在主makefile文件的底部,符合该法案。
但是,如果您确实需要一棵树,那么您必须将所有include <file>
替换为$(call include,<file>)
。 include
函数应该是这样的:
space :=
space +=
${space} := ${space}
stack := $(firstword ${MAKEFILE_LIST})
define includefunc
stack := $(subst ${ },|,$(strip ${MAKEFILE_LIST} $1)) ${stack}
$(info INCLUDES $(firstword ${stack}))
include $1
stack := $(wordlist 2,$(words ${stack}),${stack})
MAKEFILE_LIST := $(subst |, ,${stack})
endef
include = $(eval $(value includefunc))
$(call include,1.mak)
$(call include,_1/1.mak)
$(call include,folder/Makefile)
.PHONY: all
all: ; echo [email protected] success
使用的变量名称空间('$ {}空间:= $ {空白}')是不是在最新版本的GNU的许可品牌:http://lists.gnu.org/archive/html/help-make/2012 -01/msg00052.html – 2013-02-28 10:30:35
bobbogo完成它的方式仍然有效;从GNU生成NEWS文件:其次,变量名不能再包含空白,_unless你把空白放在一个变量中并使用variable_ – MadScientist 2013-02-28 12:31:44
解析'make -d'的输出是一个选项吗? – 2013-02-27 16:20:12