Makefile编写——菜鸟杂谈

1.什么是Makefile脚本:
    Makefile脚本集合了程序的编译指令的文件,make是一个命令工具,当执行make命令时,它会自动读取Makefile中的编译指令并执行,会自动完成整个项目的自动化编译工作。

2.为什么需要Makefile脚本:
    项目中如何有很多.c文件,它们的编译指令会有很多,需要的编译时间比较长,依赖关系非常复杂。
    
    当项目中的.h文件被修改时,对应的.c文件需要重新编译,但是我们无法人为的分辨出哪些文件需要重新编译,只能全部重新编译一下,这项操作非常耗时。所以,一个良好Makefile可以给我们节约更多的时间来内卷。

3.使用Makefile脚本的优点

  1.节约时间。

  2.记录文件之间的依赖关系

  3.自动化执行编译过程

4.Makefile的原理

  Makefile脚本的原理就是基于文件最后修改时间,被依赖文件的最后修改时间晚于目标文件,该文件就需要重新编译。
        hello.c > hello.o 
            gcc -c hello.c
        hello.h > hello.o 
            gcc -c hello.c

下面以用户管理系统为例编写Makefile

在Makefile脚本中可以使用变量

 变量名=value 定义变量并给变量赋值初值
    $(变量名) 使用变量名,获取出变量的值。

CC=gcc  //编译器
STD=-std=gnu99  //语法标准
FLAG=-Wall -Werror  //检查标准(显示所有警告并将警告当做错误处理)
TARGE=manager  //最终可执行文件的名字
OBJECT=main.o tools.o manager_user.o  //所有的目标文件名

$(TARGE):$(OBJECT)   
    $(CC) $(OBJECT) -o $(TARGE)  //使用gcc编译器将所有目标文件编译成可执行文件

main.o:%.o:%.c manager_user.h  // %.o和%.c表示所有的.o和.c文件  
    $(CC) $(STD) $(FLAG) -c $<

tools.o:%.o:%.c tools.c tools.h
    $(CC) $(STD) $(FLAG) -c $<

manager_user.o:%.o:%.c manager_user.c manager_user.h tools.h
    $(CC) $(STD) $(FLAG) -c $<

clean:  //通过make clean 指令,清除掉目标文件,头文件的编译结果,可执行文件,一般不会执行,需要手动执行
    rm -rf $(OBJECT) $(TARGE)
    rm -rf .h.gch

Makefile在面试中也经常询问,所以掌握Makefile的写法会让你的面试更加顺利。 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值