递归调用make时应使用变量MAKE
来源:互联网 发布:波士顿矩阵分析耐克 编辑:程序博客网 时间:2024/06/15 12:18
在使用make的递归调用时,在Makefile规则的命令行中应该使用变量“MAKE”来代替直接使用“make”。上一小节的例子应该这样来书写:
subsystem:
cd subdir && $(MAKE)
变量“MAKE”的值是“make”。如果其值为“/bin/make”那么上边规则的命令就为“cd subdir && /bin/make”。这样做的好处是:当我们使用一个其它版本的make程序时,可以保证最上层使用的make程序和其子目录下执行的make程序保持一致。
另外使用此变量的另外一个特点是:当规则命令行中变量MAKE时,可以改变make的“-t”(“--touch”),“-n”(“--just-print”)和“-q”(“--question”)命令行选项的效果。它所实现的功能和在规则中命令行首使用字符“+”的效果相同。
在规则的命令行中使用“make”代替了“$(MAKE)”以后,上例子规则的命令行为:“cd subdir && make”。在我们执行“make -t”(“-t”选项用来更新所有目标的时间戳,而不执行任何规则的命令),结果是仅仅创建一个名为“subsystem”的文件,而不会进入到目录“subdir”去更新此目录下文件的时间戳。我们使用“-t”命令行参数的初衷是对规则中的目标文件的时间戳进行更新。而如果使“cd subdir && $(MAKE)”作为规则的命令行,执行“make -t”就可以实现我们的初衷。
变量“MAKE”的这个特点是:在规则的命令行中如果使用变量“MAKE”,标志“-t”、“-n”和“-q”在这个命令的执行中不起作用。尽管这些选项是告诉make不执行规则的命令行,但包含变量“MAKE”的命令行除外,它们会被正常执行。同时,执行make的命令行选项参数被通过一个变量“MAKEFLAGS”传递给子目录下的make程序。
例如,当使用make的命令行选项“-t”来更新目标的时间戳或者“-n”选项打印命令时,这些选项将会被赋值给变量“MAKEFLAGS”被传递到下一级的make程序中。在下一级子目录中执行的make,这些选项会被附加作为make的命令行参数来执行,和在此目录下使用“make -t”或者“make -n”有相同的效果。
http://www.linuxsir.org/main/doc/gnumake/GNUmake_v3.80-zh_CN_html/make-05.html#_gnu_make_5.6.1
- 递归调用make时应使用变量MAKE
- Make 使用自动变量
- Make递归调用之参数传递
- make使用的规则,变量等
- make(五)makefile中变量使用
- Make 学习笔记三-使用变量
- 使用make
- Make
- make
- make
- make
- make
- MAKE
- make
- MAKE
- Make
- make
- $MAKE
- iphone self. 属性的用法
- 关于wicket的checkgroup控件
- 在Java中方法参数的传递,对象是传递引用
- Silent Install
- 网络字节转换inet_aton & inet_ntoa & inet_addr和inet_pton & inet_ntop
- 递归调用make时应使用变量MAKE
- Hibernate之映射值类型集合(映射map)
- 个豆腐干反对
- Struts2中的文件上传
- 个人Java面试题收集
- 跨浏览器的iframe onload 事件监听
- excel 2003 列标题显示不全
- URL Protocol应用
- POJ 3278 : 经典BFS