makefile入门,这一篇就够了

本文详细介绍了Makefile在Linux系统下的应用,解释了其作为工程编译规则的重要性,特别是在C/C++项目中的自动化编译流程。通过实例演示了如何创建和使用Makefile,以及其在多文件编程和大型工程项目中的关键作用。
摘要由CSDN通过智能技术生成

定义

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值