menuselect.makeopts分析
查找makefile,这个目录的依赖关系如下:
menuselect.makeopts: menuselect/menuselect menuselect-tree makeopts build_tools/menuselect-deps $(GLOBAL_MAKEOPTS) $(USER_MAKEOPTS)
下面我们逐个分析:
1) menuselect/menuselect
查找makefile,这个目标的规则如下:
menuselect/menuselect: menuselect/makeopts
+$(MAKE_MENUSELECT) menuselect
menuselect/makeopts这个依赖不用管,在configure的时候就会生成。
$(MAKE_MENUSELECT) 展开如下:
CC="$(BUILD_CC)" CXX="" LD="" AR="" RANLIB="" CFLAGS="" $(MAKE) -C menuselect CONFIGURE_SILENT="--silent"
可以看到这条命令就是要进入menuselect目录下去执行makefile并生成menuselect。
2) menuselect-tree
这个目标的生成,比较复杂,先不看了
3) makeopts不用管,这个在_all的依赖里已经分析过了。
4) build_tools/menuselect-deps,这个文件在configure的时候生成。在Makefile里就查不到。
5) $(GLOBAL_MAKEOPTS)和$(USER_MAKEOPTS)
这两个目录展开后为:
GLOBAL_MAKEOPTS=$(wildcard /etc/asterisk.makeopts)
USER_MAKEOPTS=$(wildcard ~/.asterisk.makeopts)
wildcard为makefile的关键字,是将后面的通配符展开的,但是后面没有通配符,不知道是什么意思。
不过makefile里面有一个段话来解释这两个变量,大概意思是说,asterisk.makeopts文件是asterisk用menuselect生成的配置文件,如果我们的系统里有这个文件,以后用新版本的asterisk的时候就不需要再用menuselect重新设置了。第一个asterisk.makeopts是全局的,第二个.asterisk.makeopts是用户的。如果有第一个,就会覆盖第二个。