打印
[复制链接]
1973|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sxggj|  楼主 | 2009-3-12 11:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是一个MAKEFILE的第一条指令,ALL:是目标,不明白后面不是跟着.o文件,而是跟着好多,MAKE命令,谁能解释一下,这堆MAKE是用来干什么的

相关帖子

沙发
箫笑| | 2009-3-12 13:23 | 只看该作者

re

这个是我自己总结的:
makefile的规则:
       target ... : requisites ...
                    command
                    ...
                    ...
第一行称为规则,第二行是执行规则的命令。

target是一个目标文件,可以是Object File,也可以是执行文件;requisites是生成这个target的所有依赖文件;command是完成这个操作的shell命令。

target也可以当作伪目标,此时command为空,用于一个项目中要生成多个相互独立的目标文件。这些需要生成的独立的目标文件全部当作target伪目标的依赖文件,却没有实际生成它的命令,但make依然会试图更新所有依赖文件,这样就达到了预期的目的。

target还可以是一个标签,当其作为标签时,冒号后面不写依赖文件。所以这时它不是一个文件,只不过是一个动作的名字,像C语言中的lable一样,make不会自动去找文件的依赖性,也就不会自动执行其后所定义的命令。要执行其后的命令,就要在make命令后明显得指出这个lable的名字。利用这个特性,可以在一个makefile中定义不用的编译或是和编译无关的命令,比如程序的打包,备份,删除中间文件等等,需要完成这些操作时,执行一下“make (lable)”就可以了。

所以你说的all是作为伪目标来用的,也就是最后一种情况,那堆make才是真正希望执行的命令。

使用特权

评论回复
板凳
未来是梦| | 2009-3-12 13:30 | 只看该作者

re

make -C sysinit    #进入目录sysinit找Makefile,make

使用特权

评论回复
地板
sxggj|  楼主 | 2009-3-12 13:36 | 只看该作者

谢谢LS,MAKEFILE不太熟悉,但查了一下

规则好像说,像这种.PHONY 声明的伪目标是不应该放在开头的呀,,难道下图中的.EXPORT_ALL_VARIABLES是怎么回事,而且前面还个"."

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

230

主题

1397

帖子

3

粉丝