makefile

        Makefile在编程过程中经常被使用到,笔试或面试过程中也经常有被提到,因此需要好好学习一下哦。本篇博文为大家介绍三种makefile编写版本,这三个版本采用循序渐进的方式。可能有一些小伙伴对版本1比较熟悉,因为平时书上都是这么讲的,并且你平时也是这么编写的,对吧?当看到版本2时,有点熟悉,但不是特别理解。版本3就直接蒙圈了,这是啥啊?(开始怀疑人生了……)呵呵,不要紧张慢慢来,看了这篇博文你就都会了。

       本篇博文模拟了一个大家都熟悉的场景,方便初学者对makefile的理解。

 

场景介绍:add.c、sub.c、mul.c、dvd.c分别完成加减乘除的运算,由main.c文件来调用。

以下为makefile的三个版本,供大家参考。

 

版本1

# 目标文件 : 依赖文件

# tab cmd(注意:命令前必须至少有一个【tab】)

 

main : main.o add.o sub.o mul.o dvd.o

       gcc main.o add.o sub.omul.o dvd.o -o main

main.o : main.c

       gcc main.c -c -o main.o

add.o : add.c

       gcc -c add.c

sub.o : sub.c

       gcc -c sub.c

mul.o : mul.c

       gcc -c mul.c

dvd.o : dvd.c

       gcc -c dvd.c

 

版本2

main : main.o add.o sub.o mul.o dvd.o

       gcc $^ -o $@    # $^ 代表所有依赖文件

                                   # $@ 代表目标文件

main.o : main.c

       gcc $< -c -o $@   #$< 代表第一个依赖文件

add.o : add.c

       gcc $< -c -o $@

sub.o : sub.c

       gcc $< -c -o $@

mul.o : mul.c

       gcc $< -c -o $@

dvd.o : dvd.c

       gcc $< -c -o $@

 

clean:     #当上述命令执行失败或make cleam将执行以下命令

       rm -rf *.o

 

版本3(企业版)

OBJECTS=main.o \  # “\”延续到下一行

              add.o \

              sub.o \

              mul.o \

              dvd.o

 

main : $(OBJECTS)     # $(OBJECTS)为变量OBJECTS的值

       gcc $^ -o $@        #$^ 代表所有依赖文件

                                   #$@ 代表目标文件

 

# 让所有的*.c自动生成对应的*.o

# 定义变量CC=gcc

CC=gcc

.c.o:

       $(CC) -c $< -o $@

 

clean:

       rm -rf  $(OBJECTS)


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值