[makefile笔记]之三--make的递归执行
2013-08-02 14:47
239 查看
http://hi.baidu.com/kj_28/item/906c85040ea8b7103b53ee2b
make的递归执行
make的递归过程指的是:在Makefile中使用“make”作为一个命令来执行本身或者其它makefile文件的过程。递归调用在一个存在有多级子目录的项目中非常有用。例如,当前目录下存在一个“subdir”子目录,在这个子目录中有描述此目录编译规则的makefile文件,在执行make时需要从上层目录(当前目录)开始并完成它所有子目录的编译。那么在当前目录下可以使用这样一个规则来实现对这个子目录的编译
例如,我们有一个子目录叫subdir,这个目录下有个Makefile文件,来指明了这个目录下文件的编译规则。那么我们总控的Makefile可以这样书写:
subsystem:
cd subdir && $(MAKE)
其等价于:
subsystem:
$(MAKE) -C subdir
对这两个规则的命令进行简单说明,规则中“$(MAKE)”是对变量“MAKE”的引用(变量“MAKE”的值指向make可执行文件,一般为/usr/bin/make)。第一个规则命令的意思是:进入子目录,然后在子目录下执行make。第二个规则使用了make的“-C”选项,同样是首先进入子目录而后再执行make。
第二个规则的命令意思即为“cd subdir && usr/bin/make”
这两个例子的意思都是先进入“subdir”目录,然后执行make命令。
我们把这个Makefile叫做“总控Makefile”,总控Makefile的变量可以传递到下级的Makefile中(如果你显示的声明),但是不会覆盖下层的Makefile中所定义的变量,除非指定了“-e”参数。
如果你要传递变量到下级Makefile中,那么你可以使用这样的声明:
export <variable ...>;
如果你不想让某些变量传递到下级Makefile中,那么你可以这样声明:
unexport <variable ...>;
如:
示例一:
export variable = value
其等价于:
variable = value
export variable
其等价于:
export variable := value
其等价于:
variable := value
export variable
相关文章推荐
- makefile学习总结-----make的递归执行
- [makefile 笔记]之一--Make的工作方式、命令执行、伪目标与冒号
- Makefile笔记二【函数和make的规则参数】
- make(makefile)执行流程
- 【已解决】Makefile执行过程中出错:make: *** No rule to make target ` ‘, needed by xxx. Stop(转载)
- 多文件目录下makefile文件递归执行编译所有c文件(小例子1)
- Makefile执行过程中出错:make: *** No rule to make target ` ‘, needed by xxx. Stop.
- 3ff0 一个简单的执行程序的GNU automake自动生成Makefile的方法及案例
- make切换到另一目录并执行另一目录makefile
- 多文件目录下makefile文件递归执行编译所有c文件
- linux学习笔记-读《Linux编程技术详解》(2)-make与makefile
- 《跟我一起写makefile》(笔记7--运行make的参数选择)
- 【GDB调试学习笔记】Makefile多级目录生成可执行文件
- 多文件目录下makefile文件递归执行编译所有c文件
- [002-Makefile-笔记] Makefile的执行过程
- makefile调试2--显示而不执行make
- makefile详解 嵌套执行make,定义命令包
- linux程序设计笔记9:make,makefile
- 关于linux下执行脚本编译C++:需要使用make命令和makefile
- 多文件目录下makefile文件递归执行编译所有c文件