登录/注册

makefile教程

更多
我们即将编写一个关于Makefile的中文教程。Makefile通常用于自动化编译和构建过程,特别是在C/C++项目中,但也可用于其他语言或任务自动化。 教程结构: 1. Makefile简介 2. Makefile的基本结构 3. 编写规则(Rules) 4. 使用变量 5. 隐含规则和模式规则 6. 函数的使用 7. 条件判断 8. 一个完整的示例 9. 常见问题与技巧 下面开始详细讲解:

Makefile 中文教程

一、什么是 Makefile?

Makefile 是一个自动化构建工具的配置文件,用于管理项目中的编译、链接、安装等任务。它通过定义依赖关系执行命令,实现:


二、基本语法

目标: 依赖文件
[Tab]命令1
[Tab]命令2

示例

# 编译 main.c 生成可执行文件 app
app: main.c
    gcc main.c -o app

三、核心概念

  1. 目标 (Target)
    要生成的文件名(如 app)或操作名(如 clean

  2. 依赖 (Dependencies)
    生成目标所需的文件列表(如 .c 文件)

  3. 命令 (Commands)
    Tab 开头,执行操作的 Shell 命令


四、变量使用

# 定义变量
CC = gcc
CFLAGS = -Wall -O2

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

五、自动变量(常用)

变量 含义 示例
$@ 当前目标名 app
$< 第一个依赖文件 main.c
$^ 所有依赖文件 main.c util.c

示例

app: main.c utils.c
    gcc $^ -o $@

六、模式规则(通配符)

# 编译所有 .c 文件生成 .o 文件
%.o: %.c
    gcc -c $< -o $@

七、伪目标

声明不生成实际文件的操作(如 clean):

.PHONY: clean
clean:
    rm -f *.o app

八、函数使用

常用内置函数:

# 获取所有 .c 文件
SRCS = $(wildcard *.c)

# 将 .c 替换为 .o
OBJS = $(patsubst %.c, %.o, $(SRCS))

九、完整示例

CC = gcc
CFLAGS = -Wall
SRCS = main.c utils.c
OBJS = $(patsubst %.c, %.o, $(SRCS))
TARGET = app

$(TARGET): $(OBJS)
    $(CC) $^ -o $@

%.o: %.c
    $(CC) $(CFLAGS) -c $< -o $@

.PHONY: clean
clean:
    rm -f $(OBJS) $(TARGET)

十、使用流程

  1. 编写 Makefile
  2. 终端执行:
    make        # 默认构建第一个目标
    make clean  # 执行清理操作

十一、高级技巧

  1. 条件判断

    ifeq ($(OS),Windows_NT)
     RM = del /Q
    else
     RM = rm -f
    endif
  2. 包含其他 Makefile

    include config.mk
  3. 静默执行

    @echo "正在编译..."  # @ 隐藏命令回显

十二、常见错误解决

  1. Missing separator:命令前缺少 Tab
  2. No rule to make target:依赖文件不存在
  3. Command not found:命令拼写错误或未安装工具

推荐工具:make -d 查看详细调试信息


通过本教程,您已掌握 Makefile 的核心用法。实际项目中可结合自动化工具(如 CMake)生成更复杂的 Makefile。

linux系统中Makefile的使用方法

Makefile是一种编译控制文件,广泛用于项目的自动化构建。它定义了一系列的规则来指导构建的过程。通过Makefile,开发者可以轻松管理大型项目的编译链接、清理等任务。本文将从

2024-05-11 08:49:05

Makefile可以做什么?Makefile的基本格式

Makefile可以根据指定的依赖规则和文件是否有修改来执行命令。常用来编译软件源代码,只需要重新编译修改过的文件,使得编译速度大大加快。

2024-01-25 11:18:01

Makefile简介和使用方法

Makefile是和make工具一起配合使用的,用于组织管理项目源代码的编译和链接。

2023-12-26 12:24:23

跟我一起写Makefile(PDF重制版)陈皓著

跟我一起写Makefile(PDF重制版)陈皓著

资料下载 ah此生不换 2021-12-28 10:24:15

嵌入式中的Makefile应用

文章目录一.Makefile 引入二. Makefile语法1.通配符2.假象目标3.变量三.Makefile函数四.实例本文主要总结一下嵌入式

资料下载 张勇 2021-11-03 17:06:05

openwrt下面创建package之Makefile模版

openwrt下面创建package之Makefile模版(现代电源技术试题及答案)-进入openwrt/package/ ,mkdir eep以eep 为示例cd eepmkdir src把代码

资料下载 ah此生不换 2021-09-17 11:01:42

Makefile的项目模板免费下载

本文档的主要内容详细介绍的是Makefile的项目模板免费下载 可根据项目名称修改。

资料下载 shawlee1 2020-06-12 08:00:00

跟我一起学Makefile电子教材分享

什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是

资料下载 佚名 2019-12-04 15:46:21

Makefile是如何编译代码文件的?

makefile文件最常用的作用是,告诉make程序,如何来编译以及连接程序,最终生成可执行的二进制文件。

2023-05-18 15:27:58

什么是Makefile

如果您有多个 c、c++ 和其他语言的文件,并且想通过终端命令编译它们,我们该如何编译他们呢?为了解决这类问题,Makefile就出现了。

2023-02-17 10:41:18

Makefile】函数介绍

在 Makefile 中调用函数的方法跟变量的使用类似,以“**()”或“**{}”符号包含函数。

2022-11-18 10:23:52

Makefile】简单实用的Makefile模板来了

【Linux + Makefile】简单实用的Makefile模板来了

2022-08-31 12:46:12

【RT-Thread学习笔记】Makefile的FORCE

【RT-Thread学习笔记】十分钟学会Makefile的FORCE

2022-07-30 13:55:32

MakefileMakefile与shell命令的联系

博主最近在项目实践过程中,需要深度定制项目的Makefile,其中有些复杂的流程必须得借助shell脚本才能高效地完成,为此博主特意深入学习了在Makefile种调用shell命令的方法。

2022-07-11 09:06:07

Linux内核的Makefile、Kconfig和.config文件

Linux内核源码文件繁多,搞不清Makefile、Kconfig、.config间的关系,不了解内核编译体系,编译修改内核有问题无从下手,自己写的驱动不知道怎么编进内核,不知道怎么配置内核,这些

2020-11-12 17:31:55

7天热门专题 换一换
相关标签