LINUX学习 make

终端自己也自带编译按键。如图:
在这里插入图片描述我们可以看到使用make命令+想要的运行文件,会自动调用系统自带的cc编译器生成该文件,但是规则是自能成.c文件生成文件,即hello.c–>hello其他的就做不到了。这是因为系统默认一个make文件存在,我们也可以自己编写makefile文件。
例如我想把hello.c文件编译成hello文件,你就可以自己创建一个makefile文件,并在里面写下几行命令:
在这里插入图片描述
保存退出,输入make命令:
在这里插入图片描述我们可以看到,它直接给我们进行了gcc命令,并生成了hello文件,正如我们在make文件里面所写的命令。有人会觉得这是多此一举,直接gcc编译不是更省事。
对于一个文件来说可能不用makefile更省事,但是对多个文件编译来说,makefile绝对是超级省事的,我们可以在里面输入我们的编译规则,比如把当前目录的所有.c文件编译。如果你是一个个去编译,那么有多少个文件你就要写多少个命令,而我们只要输入make就行。具体参考图:
在这里插入图片描述 我的makefile文件里面的内容可能会出乎初学者的想象:
在这里插入图片描述
下面来详细介绍下makefile:
1个规则:
目标:依赖条件
1.你生成的目标时间必须晚于依赖条件的目标否则更新文件,这也就可以使程序用不用每次make都make所有文件。
2.依赖条件如果不存在,将会向下寻找新的条件产生依赖条件:
例如:

`

hello:hello.o  //我们只有hello.c文件
	gcc hello.o -o hello   
hello.o:hello.c
	gcc hello.c -c hello.c`

`
2个函数:

  1. src=$(wildcard *.c): 默认把当前目录下的所有.c文件组成表传给src,你也可以修该文件路径。
  2. target= ( p a t s u b s t (patsubst %.c,%.o, (patsubst(src)): 默认把src里的所有.c文件替换为.o文件,你也可以替换为想要的文件比如就是原名%,具体要看你的需求。
    补充:
    all:$(target) 设置最后生成的目标
    clean:-rm -rf $(target) 一键清理所生成的目标
    .PHONY: 生成伪目标,不会被系统函数干扰,比如系统自带clean函数
    3个自动变量:
    $<:规则第一个依赖条件
    $^:规则所有依赖条件
    $@:规则目标(注意:只能出现在依赖条件中)

学会利用makefile后,可以很方便地扩展你的程序。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值