IT袋

当前位置:主页 > 经验教程 > 系统教程 >

Linux

Linux Makefile文件详解(3)

时间:2024-02-22 18:39:19 来源:IT袋 作者:马勇
导读:Linux,$(CC) 和 $(CFLAGS) 替代具体的值。 9. include 指令 Makefile 可以包含其他 Makefile,使用  include  指令。这样可以将 Makefile 分成多个模块,提高可维护性。 inclu

Linux

$(CC)$(CFLAGS)替代具体的值。

9. include 指令

Makefile 可以包含其他 Makefile,使用 include 指令。这样可以将 Makefile 分成多个模块,提高可维护性。

include common.mk
main: main.o utils.o
    $(CC) -o $@ $^ $(CFLAGS)

10. PHONY 目标

有时候,我们需要定义一些不产生实际文件的目标,例如清理临时文件或执行一些特定的任务。

为了告诉 Make 这些目标不是文件名,可以使用 .PHONY 目标。

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

这个例子中,clean是一个 PHONY 目标,用于删除临时文件。

当构建一个软件项目时,make 工具可用于自动化编译过程,确保只有发生了改变的文件被重新编译。

make 使用一个名为 Makefile 的文件,其中包含了一系列规则和指令,描述了文件之间的依赖关系以及如何生成目标文件。

以下是一个简单的 Makefile 文件的结构和基本要素:

11. 基本结构

Makefile 文件由一系列规则和变量组成。每个规则描述了一个或多个目标文件的生成方式。基本结构如下:

# 注释以 '#' 开头
# 变量定义
CC = gcc
CFLAGS = -Wall
# 第一个规则是默认规则
all: target1 target2
# 规则:目标文件依赖的文件
# [tab] 指令(生成目标文件的命令)
target1: dependency1 dependency2
    $(CC) $(CFLAGS) -o target1 dependency1 dependency2
target2: dependency3 dependency4
    $(CC) $(CFLAGS) -o target2 dependency3 dependency4

12. 变量

在 Makefile 中,可以使用变量来存储和引用值。

在上述例子中,CC 和 CFLAGS 就是变量,分别存储编译器和编译选项。

13. 规则

规则由以下几部分组成:

  • 目标(Target):描述生成的文件的名称。可以有多个目标,以空格分隔。
  • 依赖关系(Dependencies):描述目标文件依赖的文件。如果依赖文件的内容发生变化,那么目标文件将被重新生成。
  • 指令(Commands):描述如何生成目标文件的命令。指令前必须有一个制表符(\t)。

14. 默认规则

第一个规则通常是默认规则,即在执行 make 命令时默认执行的规则。在上述例子中,默认规则是all: target1 target2

15. 通配符

Makefile 支持通配符,用于匹配文件列表。常用的通配符包括 *(匹配任意字符)和 %(匹配任意字符序列)。

# 匹配所有以.c结尾的文件
sources = $(wildcard *.c)

相关阅读