3.3. 使用 Makefile
要构建由多个源文件组成的复杂程序,使用名为 Makefile 的配置文件,该文件控制如何编译程序组件并构建最终可执行文件。 Makefile 也可以包含清理工作目录、安装和升级程序文件以及其它操作的说明。
make 自动使用当前目录中名为 GNUmakefile
、makefile
或 Makefile
的文件。要指定其他文件名,使用 -f
选项:
$ make -f make_file
描述 Makefile 语法的详细信息已超出本指南的范围。请参阅 GNU make (上游 GNU make manual)提供了 GNU make 实用程序、Makefile 语法及其用法的深入描述。
完整的 make manual 也以 Texinfo 格式作为安装的一部分提供。查看这个手册:
$ scl enable devtoolset-11 'info make'
例 3.2. 使用 Makefile 构建 C 程序
考虑以下名为 Makefile 的 Makefile
来构建 例 3.1 “使用 make 构建 C 计划” 中引入的简单 C 程序。Makefile 定义一些变量并指定四个 规则,它们由 目标 及其 配方 组成。请注意,带有方法的行必须以 TAB 字符开头:
CC=gcc CFLAGS=-c -Wall SOURCE=hello.c OBJ=$(SOURCE:.c=.o) EXE=hello all: $(SOURCE) $(EXE) $(EXE): $(OBJ) $(CC) $(OBJ) -o $@ .o: .c $(CC) $(CFLAGS) $< -o $@ clean: rm -rf $(OBJ) $(EXE)
要使用这个 Makefile 构建 hello.c
程序,请运行 make
工具程序:
$ scl enable devtoolset-11 'make'
gcc -c -Wall hello.c -o hello.o
gcc hello.o -o hello
这会在当前工作目录中创建一个新的对象文件 hello.o
和名为 hello
的新二进制文件。
要清理工作目录,请运行:
$ scl enable devtoolset-11 'make clean'
rm -rf hello.o hello
这会从工作目录中删除对象和二进制文件。