Makefile文件

Makefile简介

参考资料:
Makefile教程

Makefile作用

Makefile是一个用于自动构建过程的文件,常用于在Uinx/Linux环境下管理编译和链接源代码的步骤。它是Make工具的输入文件,定义了如何从源文件生成目标文件(例如可执行文件或库),以及清理构建目录等任务。通过Makefile,可以简化和自动化编译过程,避免手动输入繁琐的编译命令。

自动化构建过程

定义构建规则和依赖关系,自动化执行编译和链接步骤。
通过一条简单的命令(通常是 make),完成从源代码到可执行文件的构建。

依赖管理

追踪文件之间的依赖关系,只重新编译那些发生改变的文件,节省编译时间。
通过检查文件的时间戳,确保所有依赖关系都得到满足。

提高效率

减少重复工作,避免手动输入多个编译命令。
提供一种一致且可重复的构建方法,降低出错的可能性。

灵活性和可扩展性

可以通过变量和条件判断增加灵活性,适应不同的构建环境和配置。
支持自定义规则和目标,可以扩展构建过程,例如生成文档、运行测试等

Makefile 的基本结构

变量定义

  • 用于简化命令和路径的管理,例如源文件列表,编译器选项等
CC = gcc
CFLAGS = -Wall -g -O2
SRCS = main.c utils.c
OBJS = $(SRCS:.c=.o)

规则定义

  • 每个规则定义了如何从一组依赖文件生成目标文件。规则由目标(target)、依赖(dependencies)和命令(commands)组成。
target: dependencies
    command
  • 示例
all: my_program

my_program: main.o utils.o
    $(CC) -o my_program main.o utils.o $(CFLAGS)

main.o: main.c
    $(CC) -c main.c $(CFLAGS)

utils.o: utils.c
    $(CC) -c utils.c $(CFLAGS)

自动变量
  • 在规则的命令部分使用的特殊变量,例如:
    $@:目标文件名。
    $<:第一个依赖文件名。
    $^:所有依赖文件名
main.o: main.c
    $(CC) -c $< -o $@ $(CFLAGS)

伪目标

  • 不生成文件的目标,用于定义一些常见任务,如清理构建目录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值