定义
Makefile 可以简单的认为是一个工程文件的编译规则,描述了整个工程的编译和链接等规则。其中包含了那些文件需要编译,那些文件不需要编译,那些文件需要先编译,那些文件需要后编译,那些文件需要重建等等。编译整个工程需要涉及到的,在 Makefile 中都可以进行描述。换句话说,Makefile 可以使得我们的项目工程的编译变得自动化,不需要每次都手动输入一堆源文件和参数。
学习原因
在 Windows 下作开发的话不需要去考虑这个问题,因为 Windows 下的集成开发环境(IDE)已经内置了 Makefile,或者说会自动生成 Makefile,我们不用去手动编写。
Linux 中却不能这样,需要我们去手动的完成这项工作。Linux 下可以学习的开发语言有很多,常见的有 C/C++语言、python、java 等等。如果你想要在 Linux(Unix) 下做开发的话,不了解 Makefile 是一件非常失败的事情,甚至说你就成为不了一个合格的 Linux 开发工程师。不懂 Makefile,就操作不了多文件编程,就完成不了相对于大的工程项目的操作。如果你想在 Linux(Unix) 环境下做开发的话,Makefile 是必须掌握的一项技能。
优势
Makefile 文件描述了 Linux 系统下 C/C++ 工程的编译规则,它用来自动化编译 C/C++ 项目。一旦写编写好 Makefile 文件,只需要一个 make 命令,整个工程就开始自动编译,不再需要手动执行 GCC 命令。
makefile语法格式
ALL:目标
目标:依赖
命令一
命令二
.......
下面分别说明一下属性
ALL
Makefile 文件默认只生成第一个目标文件即完成编译,但是我们可以通过 “ALL” 指定需要生成的目标文件。
目标
即我们目标需要生成的文件,如果目标文件的更新时间晚于依赖文件的更新时间,则说明依赖文件没有改动,目标文件不需要重新编译。否则重新编译并更新目标。
依赖
即目标文件由哪些文件生成。如果依赖条件中存在不存在的依赖条件,则会寻找其它规则是否可以产生依赖条件。
例如:规则一是生成目标 hello.out 需要使用到依赖条件 hello.o,但是 hello.o 不存在。则 Makefile 会寻找到一个生成 hello.o 的规则二并执行。
命令
即通过执行该命令,由依赖文件生成目标文件。
注意每条命令前必须有且仅有一个tab 保持缩进,这是语法要求。
入门示例
1.先创建一个hello.c文件
vim hello.c
#include<stdio.h>
int main(){
printf("Hello,Linux!");
return 0;
}
2.创建Makefile文件(注意名称大小写)
vim Makefile
写入以下内容
# ALL:目标
ALL:abc.out
# 目标:依赖
abc.out:hello.c
# 命令
gcc hello.c -o abc.out
3.执行make
在命令行输入make即可
4.最后输入生成的可执行文件abc.out
(./表示在当前路径)

可发现
Hello,Linux!
已经打印输出!
参考文章:
https://blog.csdn.net/afei__/article/details/82696682
http://c.biancheng.net/view/7091.html
本文详细介绍了Makefile在Linux系统下的应用,解释了其作为工程编译规则的重要性,特别是在C/C++项目中的自动化编译流程。通过实例演示了如何创建和使用Makefile,以及其在多文件编程和大型工程项目中的关键作用。
847

被折叠的 条评论
为什么被折叠?



