Makefile 是 make 工具的配置文件,主要用于定义如何构建和管理项目的编译过程。Makefile 是 C/C++ 编译项目中的重要工具,尤其在多文件、多模块的项目中,为了方便复杂项目的管理,可以通过自动化规则提高编译效率。
这篇文章是 Makefile 的入门教程的介绍,包括其基本语法、常用功能、以及实际使用中的高级技巧。
备注:在我的资源中上传了一份完整的 makefile 使用手册指南,还有我自己手写的 makefile 如果创建和管理项目的详细过程,因为篇幅问题不适合在发表在文章中,所以打包了一份资料上传在我的资源中,有需要的朋友可自取。
手册如图所示:
Makefile 的基本概念
安装 make
:
sudo apt-get update
sudo apt-get install make
核心功能
- 自动化编译:根据文件的依赖关系自动决定哪些文件需要重新编译。
- 提高效率:只编译发生变化的部分。
- 多任务支持:可以定义清理、打包、测试等任务。
使用方法
运行 make
命令时,默认会读取当前目录下的 Makefile 文件。
make # 执行默认的目标
make <target> # 执行指定的目标
例如:
make clean # 执行 "clean" 目标
Makefile 的基本语法
1. 目标语法
Makefile 的基本语法如下:
target: prerequisites
commands
- target:目标文件或命令名称。例如可执行文件、目标文件或任务名称。
- prerequisites:依赖文件或其他目标。只有依赖文件发生变化时,target 才会被重新生成。
- commands:生成目标的命令(必须以 Tab 开头)。
示例:
hello: hello.o
gcc -o hello hello.o
hello.o: hello.c
gcc -c hello.c
在示例代码中:
- 如果 hello.c 被修改,则 hello.o 会重新生成。
- 如果 hello.o 被修改,则 hello 会重新生成。
2. 变量定义
Makefile 支持变量定义,用于简化配置和重复的命令。
示例1:
CC = gcc
CFLAGS = -Wall -g
# 简单赋值 CC :=$(XX) gcc 当前有效 // 立马获取当前XX变量的值
# 递归赋值 CC =$(XX) gcc // 去递归寻找XX变量的最后一个值
# 条件赋值 CC ?= gcc // 如果有CC变量,则该语句无效
# 追加赋值 CC +=$(XX) gcc // 在原来值的基础上,进行追加
# 使用:$(CC) 获取变量的值
示例2:
x := jake
y := $(x) and rose
x := tonly
all :
echo "x=$(x),y=$(y
标签:gcc,项目管理,makefile,make,Makefile,CC,XX,hello
From: https://blog.csdn.net/qq_39725309/article/details/144491453