在编写复杂的程序项目时,Makefile
是一个非常有用的工具,它能自动化构建过程。以下是一些基本的 Makefile
语法介绍:
-
基本结构:
target: dependenciescommand
target
:构建目标,通常是一个文件,如可执行文件。dependencies
:目标所依赖的文件或其他目标。command
:构建目标的命令,前面需要用制表符(Tab)缩进。
-
示例:
all: main.o utils.ogcc -o myprogram main.o utils.omain.o: main.cgcc -c main.cutils.o: utils.cgcc -c utils.cclean:rm -f *.o myprogram
all
是默认目标,当执行make
时会构建这个目标。clean
目标用来清理编译生成的文件。
-
变量:
CC = gcc CFLAGS = -Wall -gall: main.o utils.o$(CC) $(CFLAGS) -o myprogram main.o utils.omain.o: main.c$(CC) $(CFLAGS) -c main.cutils.o: utils.c$(CC) $(CFLAGS) -c utils.c
-
自动变量:
$@
:目标文件名$<
:第一个依赖文件名$^
:所有依赖文件名
示例:
all: myprogrammyprogram: main.o utils.o$(CC) -o $@ $^main.o: main.c$(CC) -c $<utils.o: utils.c$(CC) -c $<
-
伪目标:
clean
是一个伪目标,因为它不生成文件,只执行命令。可以通过.PHONY
声明:.PHONY: clean clean:rm -f *.o myprogram
这些基本语法帮助你创建简单而有效的 Makefile
,可以根据项目需求进一步深入探索更多功能。