Makefile结构与其常见书写格式

简介: Makefile结构与其常见书写格式

Makefile结构与其常见书写格式

Makefile 是一种用于自动化构建和管理项目的工具,其语法和结构可以有很多不同的风格,但一般而言,它包括变量、规则和目标等基本元素。以下是一个具有常见书写格式的Makefile代码示例,以及对其结构的详细说明:

# 定义变量
CC = gcc
CFLAGS = -Wall -O2
SRCS = main.c foo.c bar.c
OBJS = $(SRCS:.c=.o)
LIBS = -lm
# 默认目标
all: my_program
# 生成可执行文件
my_program: $(OBJS)
    $(CC) $^ $(LIBS) -o $@
# 生成目标文件
%.o: %.c
    $(CC) $(CFLAGS) -c $< -o $@
# 清理操作
clean:
    rm -f my_program $(OBJS)



 1. 变量定义:
在上述示例中,使用了变量来存储编译器 (CC)、编译选项 (CFLAGS)、源文件列表 (SRCS)、目标文件列表 (OBJS) 和链接库 (LIBS)。这样的变量定义使得代码更加模块化,易于维护和修改。
 2. 默认目标:
Makefile 一般会指定一个默认目标,当用户执行 make 命令时,会执行该目标下定义的规则。在这个例子中,默认目标是 all,它依赖于 my_program 目标。
 3. 生成可执行文件规则:
my_program 目标通过依赖于目标文件列表 ($(OBJS)),使用链接命令生成最终的可执行文件。这个规则展示了变量引用、命令的执行和目标的定义。
 4. 生成目标文件规则:
%.o: %.c 规则定义了生成目标文件的方式。通过自动变量 $< 获取依赖文件列表中的第一个文件(源文件),并使用编译器命令生成目标文件。
 5. 清理操作:
为了方便项目的维护,一般会包含一个 clean 目标,用于清理生成的可执行文件和目标文件。这样的规则有助于确保在重新构建项目时始终从干净的状态开始。
 这个示例涵盖了一个基本的Makefile结构,其中包括了变量的定义、目标的规则以及清理操作。这种结构使得Makefile更加模块化、易读且易于维护,同时提高了代码的可重用性。

相关文章
|
6月前
|
C++ 开发者
2C++的程序的构成和书写形式
2C++的程序的构成和书写形式
43 2
|
6月前
|
编译器 程序员 C语言
【文件包含的本质、预处理符号、# vs ##】
【文件包含的本质、预处理符号、# vs ##】
|
6月前
|
算法 开发者
【Makefile 相关 】Makefile中patsubst(扩展通配符)的含义
【Makefile 相关 】Makefile中patsubst(扩展通配符)的含义
153 0
|
6月前
|
编译器 Linux C语言
预处理详解(#和##运算符、命名约定、#undef​​、命令行定义​、条件编译、头文件的包含​)
预处理详解(#和##运算符、命名约定、#undef​​、命令行定义​、条件编译、头文件的包含​)
|
6月前
|
算法 开发者
【CMake 设计命名思路】自定义命令命名规范与风格指南
【CMake 设计命名思路】自定义命令命名规范与风格指南
94 0
|
6月前
Makefile中.SUFFIXES的含义
Makefile中.SUFFIXES的含义
160 0
|
6月前
Makefile中.PHONY的含义
Makefile中.PHONY的含义
912 0
|
编译器
通用Makefile的使用及解析1
通用Makefile的使用及解析
83 0
通用Makefile的使用及解析 2
通用Makefile的使用及解析
170 0
|
编译器 C++
C++ 基础篇c++注释语法解析
程序的注释是解释性语句,您可以在 C++ 代码中包含注释,这将提高源代码的可读性。所有的编程语言都允许某种形式的注释。