makefile简单语法

文章目录


make file的基本语法为:
target :needs file
[tab] 命令
main: thanks1.o thanks2.o thanks3.o thanks.o
        gcc -o main thanks1.o thanks2.o thanks3.o thanks.o
thanks.o: thanks.c
        gcc -c thanks.c 
thanks1.o: thanks1.c
        gcc -c thanks1.c
thanks2.o: thanks2.c
        gcc -c thanks2.c
thanks3.o: thanks3.c
        gcc -c thanks3.c

规则1.
target 是要生成的目标文件的名称,needs file 是要生成这个目标文件需要的文件
命令是告诉如何通过需要的文件生成目标文件
例如下面的main
生成main这个目标文件需要 thanks1.o thanks2.o thanks3.o thanks.o 四个文件
所要执行的命令为 gcc -o main thanks1.o thanks2.o thanks3.o thanks.o

规则2.
make 命令默认执行Makefile中第一个target
搜索needs file 的空间是makefile 中的target 以及当前目录
例如;
main会先在Makefile中搜索有没有名称为 thanks1.o 的target
如何找到就先执行这个target(执行规则一样),生成thanks1.o 文件
如何没找到就会在当前目录下寻找thanks1.o 文件
如何还没找到就会报错,说找不到 thanks1.o 文件
规则3.
main: thanks1.o thanks2.o thanks3.o thanks.o
gcc -o main thanks1.o thanks2.o thanks3.o thanks.o

如果当前目录没有thanks1.o 等文件,按照我们上面所说的,上面的代码应该会报错,因为找不到
thanks1.o等文件。
但实际上 Makefile还有一些默认规则:
规则3:
如果needs file为 .o 类型的文件且下面找不到名为.o 的target,以及当前目录中没有*.o 文件
Makefile会默认生成一个名为*.o 的targe
target.o: target.c
cc -c target.o target.c

然后执行这个target,生成*.o 文件
也即是我们以后所有的*.o 的target都可以省略不写
规则4.
同时 Makefile中还可以定义变量
下例中,定义了一个名为 OBJS的变量

OBJS = thanks1.o thanks2.o thanks3.o thanks.o
 main: ${OBJS}
        gcc -o main ${OBJS}

规则5.
定义其他的执行动作
前面我们说到,make会默认执行第一个targe
我们也可以定义其他动作
下例中,我们可以使用 make clean 来执行 clean 这个target

OBJS = thanks1.o thanks2.o thanks3.o thanks.o
 main: ${OBJS}
        gcc -o main ${OBJS}
 clean:
     rm main ${OBJS}
全部评论

相关推荐

头像
今天 11:23
已编辑
北京邮电大学 管理咨询
211勇闯初创小公司头破血流系列3这件事不是发生在我身上的,但前同事们参与创作的积极性空前高涨,为了习惯,还是都采用第一人称的视角来看这出大戏。有一天老板在我们的眼皮底下接了一个电话,最终敲定了去北京出差的时间,下周一。他得意洋洋地说,这单下来保底五百万的流水,如果成了,我们都能得到五位数的提成。这对于一群刚上班的人来说是天大的诱惑,我们经历了周末的无偿加班,把他去北京所需要的文件都准备好了。只是在去北京的周一当天,老板睡过头了。整个上午都没见他的踪影,给他发文件也不会,打电话问问题也不接,直到中午才姗姗来迟。当然,这只是拉开了这场恐怖出差的序幕。只见他来了也不紧不慢的,手指在办公室转了一圈,...
姜大力:补充: 1.五百万的单子根本没有五百万,只是过去展示拼装的产品并简单考察。该项目只是竞标,项目内容是商业街区改造; 2.决策是当天上午10点半左右老板珊珊来迟后突发奇想去北京,中午1点在催促下着急出发,没有任何出差补助; 3.出发之前已经知道进京证不好使了,但还是执意要开车去; 4.实习生实打实连续开了***小事车,非常辛苦,工资在转正后只有两千五; (有疑问会继续补充)
点赞 评论 收藏
分享
03-07 13:49
门头沟学院 Java
牢弟本弟:怕实习工资太少,你来活不下去
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务