linux Makefile浅析

    接触过linux的人对一个文件,肯定不会陌生,那就是Makefile。在使用make编译程序时,make会根据每个文件的时间戳,来决定那些文件需要重新编译,哪些文件已经是最新的了不需要编译,然后再根据同一目录下的Makefile所定义的编译规则编译文件。下面就来跟各位探讨一下,自己学习Makefile的一些心得体会:

1.Makefile规则

    一个简单的Makefile文件包含一系列的“规则”,基本格式如下:

    目标(tatget)...:依赖(prerequiries)

    <tab>命令(command)

  目标(target)一般是要生成的文件名称,可以是可执行文件或OBJ文件(*.o)也可以是一个可执行的动作名称,例如:“clean”,“cp”等。

  依赖(prerequiries)一般是生成目标的材料(如源文件),通常情况下,一个目标会有几个依赖文件,在这种情况下,将所有的依赖文件写在一起,中间用“,“隔开。

  命令是依赖(prerequiries)生成目标(target)所执行的动作,一个规则可以含有多个命令,每个命令占一行,(注意:每个命令前必须是一个Tab

2.Makefile的赋值方法

   例如:immediate = deferred

               immediate  ?= deferred

               immediate  := deferred

               immediate += deferred  or immediatate

    在GNU make中对变量有两种定义:延时变量、立即变量。两者的区别在于,定义的方式和扩展的方式不同。前者是在这个变量使用时才扩展,亦即当真正使用时这个变量的值才确定;后者在定义时它的值就已经确定了。使用"="、"?="定义或使用define命令定义的变量都是延时变量,使用“:=”定义的变量是立即变量,需要注意的是,“?=”仅仅是在变量还没有定义的情况下有效,即“?=”用来定义第一次出现的延时变量。

   对于附加操作符“+=”,右边变量如果是在前面使用(:=)定义的立即变量,则它是立即变量,否则均为延时变量。

   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值