📜  多个 c 文件的 makefile (1)

📅  最后修改于: 2023-12-03 15:37:51.109000             🧑  作者: Mango

多个 C 文件的 Makefile

当我们的项目中包含多个 C 文件时,我们需要编写一个 Makefile 来自动化构建整个项目。在本文中,我们将学习如何编写 Makefile 来构建多个 C 文件。

Makefile 概述

Makefile 是一个文本文件,它包含一些命令来自动化构建项目。Makefile 通常由一系列规则组成,每个规则包含一个目标和依赖项,以及要执行的命令。

以下是一个基本的 Makefile 规则:

target: dependency1 dependency2
    command1
    command2

这个规则告诉 Make 工具,当目标 target 比其依赖项 dependency1dependency2 更旧时,要执行命令 command1command2

通常,Makefile 还包含一些变量来保存共享的值,例如编译器的路径和选项。

编写多个 C 文件的 Makefile

现在我们来看一个例子,有两个 C 文件 main.chello.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.ohello.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

要运行 Makefile,请在终端中使用 make 命令。Make 工具会检查每个规则的依赖项,并仅构建必要的目标。

为了构建目标文件,并构建 main 可执行程序,您可以输入以下命令:

make main
总结

本文中,我们学习了如何编写一个 Makefile 来构建多个 C 文件。我们定义了变量来保存编译器的路径和选项,并编写了规则来编译每个 C 文件和链接所有的目标文件。最后,我们学习了如何运行 Makefile 来构建目标文件和可执行程序。