📅  最后修改于: 2023-12-03 14:51:18.109000             🧑  作者: Mango
Makefile是一种文件格式,用于指导程序员如何编译和构建代码。在Makefile中定义规则是编译和构建代码的核心部分。本文将介绍如何在Makefile中定义规则。
一个基础规则由目标和依赖组成,如下所示:
target: dependency
commands
其中:
target
指定了要生成的对象,如一个可执行文件或一个库文件等;dependency
指定了生成 target
所需要的依赖文件;commands
指定了生成 target
所需要执行的命令。下面是一个示例:
hello: hello.c
gcc -o hello hello.c
上面的规则指定了要将 hello.c
编译成一个可执行文件 hello
。如果文件 hello.c
没有修改,那么下次执行 make
命令时,就不会重新编译了。只有在 hello.c
发生了修改,才会重新编译。
在Makefile中,可以定义多个规则,从而构建多个不同的目标。示例:
hello: hello.c
gcc -o hello hello.c
world: world.c
gcc -o world world.c
上面的规则指定了要将 hello.c
编译成一个可执行文件 hello
,将 world.c
编译成一个可执行文件 world
。
通配符是在Makefile中定义规则时经常用到的一种简化方式。Make自带了一些通配符字符,其中最常用的是 %
。示例:
%.o: %.c
gcc -c $< -o $@
上面的规则表示,生成 .o
文件的依赖文件是 .c
文件,$<
代表 .c
文件名,$@
代表 .o
文件名。
在Makefile中,可以使用变量来定义规则中的变量。示例:
CC=gcc
CFLAGS=-g -Wall
hello: hello.c
$(CC) $(CFLAGS) -o hello hello.c
上面的规则定义了 CC
和 CFLAGS
两个变量,并在编译时使用这两个变量。这样可以使编译规则更加灵活。
本文介绍了在Makefile中定义规则的基础知识,包括基础规则、多个规则、通配符规则和变量规则等。对于需要编译和构建代码的程序员来说,掌握这些知识非常重要。