linux makefile (makefile规则与示例)

在 Makefile 中,make 命令是用来执行 Makefile 中的规则的。make 命令通常的语法形式为:

make [options] [target]

其中,options 是可选的命令行选项,target 是要构建的目标。如果没有指定 target,则默认执行 Makefile 中的第一个目标。

下面是一些常用的 make 命令选项:

  • -f <filename> 或 --file=<filename>:指定要使用的 Makefile 文件,默认为 Makefile 或 makefile。
  • -j <num> 或 --jobs=<num>:指定同时执行的任务数。
  • -C <dir>:指定 Makefile 文件所在的目录。

例如,假设有一个名为 Makefile 的文件,并定义了以下规则:

all: foo.o bar.o

foo.o: foo.c
    gcc -c foo.c -o foo.o

bar.o: bar.c
    gcc -c bar.c -o bar.o

clean:
    rm -f foo.o bar.o

我们可以运行以下命令来执行 Makefile 中的规则:

  • make all:构建所有目标,即编译 foo.c 和 bar.c 并生成 foo.o 和 bar.o。
  • make foo.o:只构建 foo.o 目标,即编译 foo.c 并生成 foo.o。
  • make bar.o:只构建 bar.o 目标,即编译 bar.c 并生成 bar.o。
  • make clean:执行 clean 目标,删除生成的目标文件。

可以根据需要选择不同的目标来构建或执行相应的操作。make 命令会自动解析 Makefile 中的依赖关系,并根据规则中定义的命令来执行相应的操作,以确保构建过程的正确性和一致性。

make 常用参数

在使用 make 命令时,可以添加一些常用的参数来控制构建过程。以下是一些常用的 make 参数:

  1. -f <filename> 或 --file=<filename>:指定要使用的 Makefile 文件。默认情况下,make 命令会在当前目录下寻找名为 Makefile 或 makefile 的文件作为 Makefile,但通过 -f 参数可以指定其他的 Makefile 文件。
make -f MyMakefile   # 使用名为 "MyMakefile" 的 Makefile 文件
  1. -j <num> 或 --jobs=<num>:指定同时执行的任务数。通过并行构建可以加快构建速度。<num> 指定同时执行的任务数,可以是一个整数值。
make -j4   # 同时执行 4 个任务
  1. -k 或 --keep-going:在构建过程中遇到错误时继续构建其他目标,而不是立即停止。默认行为是一旦遇到错误就停止构建。
make -k   # 遇到错误时继续构建其他目标
  1. -n 或 --just-print:显示执行 make 命令时将要执行的命令,但不实际执行。这对于查看构建过程中将要执行的命令非常有用,而不实际执行它们。
make -n   # 显示将要执行的命令,但不实际执行
  1. -C <dir>:指定 Makefile 文件所在的目录。当 Makefile 文件不在当前工作目录下时,可以使用 -C 参数指定其所在的目录。
make -C src   # 在 "src" 目录中执行 Makefile

这些是一些常用的 make 参数,可以根据具体的构建需求和情况进行相应的调整和使用。使用 make --help 命令可以查看更多的参数选项和其说明。