如何写一个makefile(详解版+实操版)

本文介绍了Makefile的基本原理,用于管理大型项目编译过程。通过简单示例展示如何编写Makefile,从基础的打印HelloWorld到逐步简化的过程,包括添加clean语句和高级版本的Makefile编写技巧。
摘要由CSDN通过智能技术生成

========================================================

这里记录makefile相关知识和一些具体的实例

========================================================

一、入门(了解理论)

1.1为什么存在makefile?

Makefile 用于帮助决定大型程序的哪些部分需要重新编译。 在绝大多数情况下,编译 C 或 C++ 文件。 其他语言通常有自己的工具,其目的与 Make 类似。 当您需要根据更改的文件运行一系列指令时,Make 也可以在编译之外使用。 本教程将重点关注 C/C++ 编译用例。

下面是您可以使用 Make 构建的示例依赖关系图。 如果任何文件的依赖关系发生变化,那么该文件将被重新编译:

-------------------------------------------------------------------------------------------------------------------------

生成makefile需要的文件示例&&.h文件的写法

-------------------------------------------------------------------------------------------------------------------------

 

  • .c文件是源文件
  • .h文件是头文件

1.2简单示例1(打印hello world)

  • 在工程目录中建一个makefile文件
  • 终端在该目录下执行make生成.o文件

注意:一定要制表符缩进,不要空格!!(所有空格键都用tab键代替)

1.3简单示例2(make的所有步骤和简化过程)

  • 编写源代码和所有需要的依赖文件(.c、.h)
  • 编写makefile文件(比较繁琐的写法)
  • 简化makefile V1
  • 简化makefile V2
  • 简化makefile V3

-------------------------------------------------------------------

                       1.3.1编写源代码

-------------------------------------------------------------------

-------------------------------------------------------------------

                        1.3.2 编写makefile

-------------------------------------------------------------------

-------------------------------------------------------------------

                       1.3.3 添加clean语句

-------------------------------------------------------------------

执行完make clean删除掉所有的.o文件和可执行文件

-------------------------------------------------------------------

                       1.3.4 简化makefile V2

-------------------------------------------------------------------

  • OBJS 代替 依赖文件(.o文件)
  • CC 代替 gcc
  • CFLAGS 代替编译命令

-------------------------------------------------------------------

                       1.3.5 简化makefile V3

-------------------------------------------------------------------

  • $^ 代替 上面指令(main.o:main.c这里指的是main.c这个文件)
  • RM 代替 rm -f
  • $@ 代替 目标文件(gcc main.c -o main.o      $(CC) $^ $(CFLAGS) -o $@)

-------------------------------------------------------------------

                       1.3.6 简化makefile V4

-------------------------------------------------------------------

  • %作为一个通配符 %.o:%.c (即代替所有的.o文件和所有的.c文件)
  • $(TARGET) 代替 可执行文件(mytool)

======================================================

                                              makefile简化过程

======================================================

V1

V2

V3

V4

参考链接:

1、如何编写一个Makefile,包括整个简化过程

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值