make的解释规则和Makefile的编写

make的解释规则

[x]对象:依赖的对象文件(第一行执行成功就退出,否则就往下找)

[x]make打开makefile文件之后,找寻第一个目标对象名称

        若没有找到:认为没有生成的对象,报错退出

        若找到了:判断对象文件是否存在,

                若对象文件存在,则向下查找,执行下一行命令

这个就是正确的

 

 

这个就是错误的

Makefile文件的输入规则

(#是自己定义的注释)

  1 main:main.o                         #目标对象:依赖对象

  2     gcc main.o -o main          #生成命令

  3 main.o:main.c

  4     gcc -c main.c -o main.o

  5 --------------------------------------------------------------  

  6 main:main.o child.o             #目标对象:依赖对象

  7     gcc main.o -o main

  8 %.o:%.c                                # %通配符

  9     gcc -c main.c -o main.o   #不合适

10                                              预定义变量

11                                                  $@    目标对象

12                                                  $^    所有的依赖对象

13                                                  $<    依赖对象的第一个

14 --------------------------------------------------------------  

15 main:main.o child.o              #目标对象:依赖对象

16     gcc $^ -o $@                   #生成命令

17 %.o:%.c

18     gcc -c $< -o $@                  

19 --------------------------------------------------------------

20 SRC = $(wildcard ./*.c)                         # 获取当前文件下所有.c文件结尾的文件名称

                                                                # wilecard 和patscbst 都是关键字

21 OBJ = $(patsubst %.c, %.o , $(SRC))     #将SRC中文件名进行修改,把.c置换成.o

22 main:$(OBJ)                             

23     gcc $^ -o $@                    

24 %.o:%.c

25     gcc -c $< -o $@

26 clean:                                                  #.PHONY:clean   生产一个伪对象---不管外部有没有clean文件,                                                                           #  代码都会被执行到(不管对象是否是最新,是否存在都会是执行)

27     rm *.o main                                     #Makefile中只会生成第一个目标对象,所以执行make,不会执行到这一行

28                                                            #要想执行这一行,就要在外部输入      make clean

29 --------------------------------------------------------------

Makefile中的变量赋值方式各有不同

 

=

https://www.cnblogs.com/wanqieddy/archive/2011/09/21/2184257.html

:=

 

?=

 

+=

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值