第 18 章 使用 Make 管理更多代码
GNU Make 实用程序通常缩写为 Make,是控制从源文件生成可执行文件的工具。自动决定 复杂程序中的哪些部分已更改,需要重新编译。make 使用名为 Makefile 的配置文件来控制程序的构建方式。
18.1. GNU make 和 Makefile 概述 复制链接链接已复制到粘贴板!
要从特定项目的源文件创建可用的表单(通常是可执行文件),请执行几个必要的步骤。记录操作及其顺序,以便稍后重复操作。
Red Hat Enterprise Linux 包含 GNU make
,这是专为此目的设计的构建系统。
先决条件
- 了解编译和链接的概念
GNU make
GNU make
读取 Makefile,其中包含描述构建过程的说明。Makefile 包含多个 规则,它们描述通过特定操作(方法)满足特定条件(目标)的方式。规则可以分层依赖于另一条规则。
运行不带任何选项的 make
即可在当前目录中查找 Makefile 并尝试访问默认目标。实际的 Makefile 文件名可以是 Makefile、
和 makefile
GNUmakefile
之一。默认目标由 Makefile 内容决定。
Makefile 详情
makefile 使用相对简单的语法来定义 变量 和 规则,这些变量和规则由一个 target 和一个 recipe 组成。如果执行规则,则目标指定输出。具有配方的行必须以 tab 字符开头。
通常,Makefile 包含用于编译源文件的规则、用于链接结果对象文件的规则,以及充当层次结构顶部的入口点的目标。
请考虑以下 Makefile
用于构建由单个文件 hello.c
组成的 C 程序。
这将指定,要访问 所有目标
,需要 hello
文件。要获得 hello
,您需要 hello.o
(由 gcc 链接
),后者从 hello.c
创建(由 gcc
编译)。
目标 all
是默认目标,因为它是不是以句点开头的第一个目标。如果当前目录包含这个 Makefile
,则不带任何参数运行
会完全运行 make。
make
典型的 Makefile
较典型的 Makefile 使用变量来常规调整步骤,并添加目标"clean",这将删除除源文件以外的所有对象。
向此类 Makefile 添加更多源文件需要将它们添加到定义 SOURCE 变量的行。
其他资源
- GNU make:简介 - 2 Makefile 简介
- 第 15 章 使用 GCC 构建代码