【Linux】Linux项目自动化构建工具 make/Makefile

目录

1. Makefile 是如何工作的

2. 依赖关系与依赖方法

3. .PHONY

4. Makefile 的特殊符号 

写在最后:


1. Makefile 是如何工作的

make 是一个命令。

Makefile 是一个文件,当前目录下的一个文件。

我们先来上手写一个简单的 Makefile 文件,

1. 创建一个叫 Makefile 的文件(首字母可以小写)

2. 编辑这个文件

mycode:mycode.c

mycode:mycode.c,这是个什么?

我们在当前目录下创建了一个叫做 mycode.c 的文件,

这句话的意思是将 mycode.c 文件编译成 mycode,中间用 :隔开,

我们称这个为依赖关系。 

那具体怎么编译呢?

gcc -o mycode mycode.c

下面的 gcc -o mycode mycode.c 就叫做依赖方法。

写完之后保存退出。 

我们把 mycode.c 的代码编写好:

然后我们就直接输入 make:

他就会根据我们的依赖关系执行对应的依赖方法,这样就生成了 mycode 可执行程序。

那如果我们不想要这个可执行程序了,该怎么办?直接 rm 吗?好像不太好,

我们再次打开 Makefile 文件:

写一个 clean,不依赖任何东西,然后写好依赖方法,

这样当我保存退出后,直接写入 make clean:

就会自动帮我们使用 clean 的方法。

这样当我们再修改我们 mycode.c 的代码之后,

我们就不用再用 gcc 了,可以直接 make clean;make 就能重新构建可执行程序。

2. 依赖关系与依赖方法

还是拿这个来举例,

mycode 依赖于 mycode.c 

但是光有依赖关系是办不成任何事情的,

所以就有了下面的依赖方法

而 make 就会在当前路径下查找 Makefile 文件,执行这些依赖关系以及他们的方法。

而 make 会自顶向下扫描,第一个文件就会作为他的默认文件,

所以第一个文件是谁,直接 make 就会执行谁。

3. .PHONY

当我们重复的进行 make 的时候,他不让我们编译了,

因为操作系统检测到我们的源文件没有修改,没有必要重新编译,

那我们怎么样才能让他不限制我们呢?

 

我们加上这样一个东西,就是告诉系统,不要管我们:

这样我们随便 make 他就不管我们了。

不过我们不太推荐一直可以编译可执行程序,但是清理工作可以这样设置:

4. Makefile 的特殊符号 

还是以我们之前的写的 Makefile 文件:

$@ 表示的是依赖关系左边的值

$^ 表示的是依赖关系右边的值

通过这两个符号,我们之后就不用手写了,只需要写好依赖关系,

就可以直接使用这两个符号。

Makefile 学会这些就基本够用了。

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果感到有所收获的话可以给博主点一个哦。

如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~

猜你喜欢

转载自blog.csdn.net/Locky136/article/details/131791662