📅  最后修改于: 2023-12-03 15:37:51.109000             🧑  作者: Mango
当我们的项目中包含多个 C 文件时,我们需要编写一个 Makefile 来自动化构建整个项目。在本文中,我们将学习如何编写 Makefile 来构建多个 C 文件。
Makefile 是一个文本文件,它包含一些命令来自动化构建项目。Makefile 通常由一系列规则组成,每个规则包含一个目标和依赖项,以及要执行的命令。
以下是一个基本的 Makefile 规则:
target: dependency1 dependency2
command1
command2
这个规则告诉 Make 工具,当目标 target
比其依赖项 dependency1
和 dependency2
更旧时,要执行命令 command1
和 command2
。
通常,Makefile 还包含一些变量来保存共享的值,例如编译器的路径和选项。
现在我们来看一个例子,有两个 C 文件 main.c
和 hello.c
,我们的目标是构建 main
可执行程序。
首先,我们定义一些变量来保存编译器的路径和选项:
CC = gcc
CFLAGS = -Wall -Werror
然后,我们定义规则来编译每个 C 文件:
main.o: main.c hello.h
$(CC) $(CFLAGS) -c main.c
hello.o: hello.c hello.h
$(CC) $(CFLAGS) -c hello.c
这些规则告诉 Make 工具如何编译每个 C 文件,它们分别依赖于文件 hello.h
。
最后,我们定义一个规则来链接所有的目标文件:
main: main.o hello.o
$(CC) $(CFLAGS) main.o hello.o -o main
这个规则告诉 Make 工具,当 main.o
和 hello.o
更旧时,要链接所有的目标文件并构建可执行程序 main
。
完整的 Makefile 如下所示:
CC = gcc
CFLAGS = -Wall -Werror
main.o: main.c hello.h
$(CC) $(CFLAGS) -c main.c
hello.o: hello.c hello.h
$(CC) $(CFLAGS) -c hello.c
main: main.o hello.o
$(CC) $(CFLAGS) main.o hello.o -o main
要运行 Makefile,请在终端中使用 make
命令。Make 工具会检查每个规则的依赖项,并仅构建必要的目标。
为了构建目标文件,并构建 main
可执行程序,您可以输入以下命令:
make main
本文中,我们学习了如何编写一个 Makefile 来构建多个 C 文件。我们定义了变量来保存编译器的路径和选项,并编写了规则来编译每个 C 文件和链接所有的目标文件。最后,我们学习了如何运行 Makefile 来构建目标文件和可执行程序。