
makefile里怎么写才能make+名字进行指定编译
比如 make pthrd_shared
就执行 gcc pthrd_shared.c -o pthrd_shared -Wall -g -lpthread
make t.c就执行
gcc t.c -o t -Wall -g -lpthread

阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程
要在 Makefile 中实现指定编译目标的功能,可以使用 $(MAKECMDGOALS) 变量,它将包含用户在命令行中指定的目标名称。
下面是一个简单的示例 Makefile:
CC=gcc
CFLAGS=-Wall -g -lpth
all: $(MAKECMDGOALS)
$(MAKECMDGOALS): %.c
$(CC) $< -o $@ $(CFLAGS)
在上面的 Makefile 中,我们使用 $(MAKECMDGOALS) 作为目标名称,%.c 是一个通配符,匹配所有以 .c 结尾的文件。然后,我们使用 $(CC) 编译器和 $(CFLAGS) 编译选项来编译目标文件。
现在,你可以使用 make 命令指定编译目标名称,例如:
make pthrd_shared
Makefile 将自动编译 pthrd_shared.c 文件并生成 pthrd_shared 可执行文件。
CC=gcc:指定编译器为 gcc。CFLAGS=-Wall -g -lpth:指定编译选项为 -Wall、-g 和 -lpth。all: $(MAKECMDGOALS):指定目标名称为用户在命令行中指定的目标名称。$(MAKECMDGOALS): %.c:匹配所有以 .c 结尾的文件,并将其作为目标文件。$(CC) $< -o $@ $(CFLAGS):使用 $(CC) 编译器编译目标文件,使用 $(CFLAGS) 编译选项。使用 Makefile 可以实现自动编译、编译优化和依赖关系管理等功能。Makefile 可以帮助你更好地管理项目的编译过程,提高编译效率和可维护性。