Makefile 中all 和.PHONY的作用】的更多相关文章

请编写一个makefile同时编译.链接下面两个程序: main1.c: #include<stdio.h> int main(void) { printf("main1\n"); } main2.c: #include<stdio.h> int main(void) { printf("main2\n"); } [分析]:这里需要生成两个可执行文件main1和main2(两个目标).由于makefile只能有一个目标,所以可以构造一个没有规…
单词phony (即phoney)的意思是:伪造的,假的.来自collins的解释是: If you describe something as phoney, you disapprove of it because it is false rather than genuine. 那么,在Makefile中,.PHONY后面的target表示的也是一个伪造的target, 而不是真实存在的文件target,注意Makefile的target默认是文件. 举个例子: $ cat -n Make…
伪目标是这样一个目标:它不代表一个真正的文件名,在执行make时可以指定这个目标来执行所在规则定义的命令,有时也可以将一个伪目标称为标签.伪目标通过   PHONY来指明. PHONY定义伪目标的命令一定会被执行,下面尝试分析这种优点的妙处. 1.如果我们指定的目标不是创建目标文件,而是使用makefile执行一些特定的命令,例如: clean: rm *.o temp 我们希望,只要输入”make clean“后,”rm *.o temp“命令就会执行.但是,当当前目录中存在一个和指定目标重名…
PHONY 目标并非实际的文件名:只是在显式请求时执行命令的名字.有两种理由需要使用PHONY 目标:避免和同名文件冲突,改善性能. 所谓的PHONY这个单词就是伪造的意思,makefile中将.PHONY放在一个目标前就是指明这个目标是伪文件目标,如下:.PHONY:clean这里clean目标没有依赖文件,如果执行make命令的目录中出现了clean文件,由于其没有依赖文件,所以它永远是最新的,所以根据make的规则clean目标下的命令是不会被执行的.如下的例子: [yangfan@dhc…
我的理解: 拿clean举例,如果make完成后,自己另外定义一个名叫clean的文件,再执行make clean时,将不会执行rm命令. 为了避免出现这个问题,需要.PHONY: clean ======================================================================================= 所谓伪目标就是这样一个目标,它不代表一个真正的文件名,在执行make时可以指定这个目标来执行其所在规则定义的命令,有时我们将一个伪…
phony target Makefile的语法很简单 <target> : <prerequisites> [tab] <commands> 目标.先决条件.命令 构成了Makefile的全部规则 一般而言,说到目标总给人一种非要产生么东西出来的感觉,如果带着这种感觉理解phony target(伪目标)可能有些吃力.更好的一种理解是将phony target理解成一个动作,动作的特点是不一定非得产生么东西出来,但是会执行一些操作.Makefile中的phony ta…
本博文是在学习了<GNU Make中文手册>后记录下来的自己的关于自动产生makefile依赖的语句的理解,向大家分享. <GNU make中文手册>中的相关章节见一下链接: http://blog.csdn.net/gmpy_tiger/article/details/51849257 ======================================================================================== 为了理解自动产生依…
该篇文章为转载,是对原作者系列文章的总汇加上标注. 支持原创,请移步陈浩大神博客:(最原始版本) http://blog.csdn.net/haoel/article/details/2886 我转自一个博主,基于原博客的整理版本: https://blog.csdn.net/seven_amber/article/details/70216216 make 的运行 一般来说,最简单的就是直接在命令行下输入make命令,make命令会找当前目录的makefile来执行,一切都是自动的.但也有时你…
一.描述 Makefile的函数调用,很像变量的使用,也是以"$"来标识的,其语法如下: $(<function> <arguments> ) 或是 ${<function> <arguments>} 这里,<function>就是函数名,make支持的函数不多.<arguments>是函数的参数,参数间以逗号","分隔,而函数名和参数之间以"空格"分隔 Makefile中支…
Makefile中的目标 一般目标 目标就是我们需要的最终文件,也是make的最终输出 Makefile的运行机制是:先将目标当成文件,查看文件是否存在,如果存在且是最新,那么直接结束,如果文件不存在,那么根据依赖和命令生成目标. 伪目标 伪目标也是目标 伪目标是一种特殊的目标,有其特殊性 伪目标的特殊性:伪目标不会当成文件来判断,只是一个标签 伪目标同样可以有依赖,这样make伪目标时就是先make依赖,然后运行规则 作用:伪目标每次都会更新 格式:.PHONY : xxx 例子: .PHON…