Make命令仅执行Makefile首行,如何一次性运行所有命令?
解决Makefile一次性构建所有目标的问题
先修正你当前Makefile里的两处关键问题:
1. 修复编译命令的语法错误
第二条编译命令里的gcc-c缺少空格,应该改为gcc -c,否则执行时会因找不到gcc-c命令而失败。
2. 添加all伪目标
Make默认只会构建文件中的第一个目标,所以需要定义一个包含所有待构建目标的all目标,并将其放在文件最开头,这样执行make或make all都会触发所有编译指令。
修改后的完整Makefile如下:
.PHONY: all all: main.o functionsLab1.o main.o: main.c functionsLab1.c functionsLab1.h gcc -c main.c functionsLab1.o: functionsLab1.c functionsLab1.h gcc -c functionsLab1.c
补充说明:
.PHONY: all声明all是伪目标,避免当前目录下存在名为all的文件时,Make误判目标已完成而跳过构建。all目标依赖main.o和functionsLab1.o,Make会自动依次构建这两个依赖目标,从而执行所有编译命令。- 现在执行
make或make all,都会一次性运行所有编译指令。
内容的提问来源于stack exchange,提问作者TheBeast3334
相关产品推荐
相关产品推荐

