使用makefile进行代码的管理

makefile

makefile的作用

它在我看来的主要作用就是帮助我们管理好已经写好的代码,如果只有一到两个的.c或者是.h文件我们用gcc的命令就还好,如果像上次做一个简单的加减乘除的一个小功能我们发现gcc的命令就会变的很长,或者说要记住的东西就比较多,所以我们在linux下面用makefile进行管理代码很方便,而且还不容易出错这是我们要学习的一个重点内容,当然我也是才学习,照方抓药希望大神+我,给我一些学习上的帮助。

最简单的版本

之前我们学习静态库的时候里面有一些素材我今天就直接用cp拷贝了一些到我今天学习的目录下如图

我们接着用这些代码。

然后我们回想一下如果我们要把这些.c文件全部编译成.o文件然后再把.o文件编译成一个可执行的文件我们是怎么做的?是不是 要一个一个的去写gcc???那是不是太麻烦了,现在我们只需要用一个文件加一个命令就搞定了,于是我就在网上找了一些资料写一个最简单的第一版

首先我们创建一个makefile文件,它有三点比较重要1.就是生成什么,2.生成这个东西需要的条件,3.执行命令是什么这是我理解最简单的三条。

根据这三条我们可以写下面的语句:

app:add.c div.c main.c mul.c sub.c
gcc add.c div.c main.c mul.c sub.c -o app

这里我们发现首先app是我们要实现的最终可执行文件,然后它的条件就是需要我们把每一个文件都生成.o文件以后最后出来我们想要的结果,所以这个就是我最直接的编写的makefile文件写完了以后我还要去main.c中给出一些测试,发现没什么问题。

第二个版本 

第一版本的问题在于我会每次都把我们想要把所有的文件都编译如果我有很多的话是不是需要每一个文件都要编译?于是我们才出第二版。
代码如下
app:add.o div.o main.o mul.o sub.o
gcc add.o div.o main.o mul.o sub.o -o app
main.o
gcc -c main.c
div.o
gcc -c div.c
mul.o
gcc -c mul.c
sub.o
gcc -c sub.c
第二版本的代码可以这样解释,app需要add.o等文件才能编译出来,然后我们看到div.o的依赖在后面有一个gcc -c div.c这个命令编译出.o文件以后就完成这个操作,然后每一个都这样操作以后就可以通过最后的gcc add.o div.o main.o mul.o sub.o -o app就可以生成app文件。

第三个版本

变量的使用
代码如下
obj main.o add.o sub.o mul.o //依赖
target=app //目标
cc = gcc//cc就带表gcc
CPPFLAGS = -I //代表路径
$(target):$(obj)
$(cc) $(obj) -o $(target)
%.o:%.c
$(cc) -c $< -o $@

这里的$()代表你在上面定义的变量的取值。

第四个版本函数

wildcard //找目录下的文件
patsubst //替换目录下的文件

两个函数的基本使用

target = app
src =$(wildcard ./*.c)#函数wildcard 参数是当前下面的.c文件
obj = $(patsubst ./%.c,./%.o,$(src))
cc = gcc
CPPFLAGS = -I
$(target):$(obj)
$(cc) $(obj) -o $(target)
%.o:%.c
$(cc) -c $< -o $@
clean:
rm $(obj) $(target)

使用make clean的时候我们就会把我们之前不要的.o文件和app文件一次性的删除这样我们就达到了一个比较智能化操作。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值