【Linux】快速学习make/makefile

目录

一、Linux系统中的make命令与makefile文件

二、makefile文件的编写

总结


一、Linux系统中的make命令与makefile文件

在linux系统中make是一个非常重要的编译命令,不管是自己进行项目开发还是安装应用软件,我们都经常要用到make或makeinstall。利用make工具,我们可以将大型的开发项目分解成为多个更易于管理的模块,一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。makefile 带来的好处就是“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。

二、makefile文件的编写

先简单写一个 test.c 文件

#include<stdio.h>
 
int main()
{
  printf("Hello world!!!");
  return 0;
} 

再写一个makefile文件

test.exe:test.c
  gcc -o test.exe test.c
.PHONY:clean
clean:
  rm -f test.exe

输入make,即可完成文件编译,输入make clean 即可完成文件清除。

mikefile文件详解如下图:

在写依赖方法时,我们可不可以用某种占位符来代替目标文件与源文件?进一步,可不可以用某个变量名来代替,目标文件名与源文件名?

对于第一个问题,我们可以用$@来代替目标文件,$^来代替源文件;对于第二个问题,makefile文件支持赋值语句,如下面代码:

bin=test.exe
src=test.c

$(bin):$(src)
    gcc -o $@ $^
.PHONY:clean
clean: 
    rm -f $(bin) 

由上图我们发现,在使用make语句时,会将依赖关系打印出来,那依赖关系语句可以不打印吗?可以使用其他语句来打印我们想打印的内容吗?

对于第一个问题,我们可以在依赖关系前价格@;对于第二个问题,我们可以增加其他Linux命令语句,如下面代码:

bin=test.exe
src=test.c

$(bin):$(src)
    @gcc -o $@ $^
    @echo "compiler $(src) to $(bin)..."
.PHONY:clean
clean:
    @rm -f $(bin)
    @echo "clean project..."    

执行效果如下:


总结

通过以上内容,我们可以快速的写出一个实用的makefile文件。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值