makefile文件编写
1.格式
自上而下地完成整个项目的编译
目标文件:需要文件
command
2.案例
自上而下地完成
首先创建文件makefile
math.exe:main.o add.o sub.o g++ main.o add.o sub.o -o math.exe main.o:main.c g++ -c main.c -o main.o add.o:add.c g++ -c add.c -o add.o sub.o:sub.c g++ -c sub.c -o sub.o
clean: rm -f *.o math.exe
|
3.使用makefile
make #自下而上地执行makefile命令 make clean #执行clean标签命令
|
4.简化写法
math.exe:main.o add.o sub.o g++ *.o -o $@ %.o:%.c g++ -c $< -o $@
clean: rm -f *.o math.exe
|
说明:
-
$@代指目标文件名
-
*.o代指所有.o文件
-
$<代指对每一个需要的文件进行遍历命令
5.创建变量与使用变量
好处,便于修改(本例可以将gcc修改为g++)
CC = gcc
math.exe:main.o add.o sub.o $(CC) main.o add.o sub.o -o math.exe main.o:main.c $(CC) -c main.c -o main.o add.o:add.c $(CC) -c add.c -o add.o sub.o:sub.c $(CC) -c sub.c -o sub.o
clean: rm -f *.o math.exe
|
6.makefile编译多个可执行文件
makefile只执行第一条语句,并根据第一条语句的依赖,执行后续生成这些依赖的语句。
如下语句,只会生成main_max,不会生成main_min
main_max:main_max.o find_max.o #执行 gcc main_max.o find_max.o -o main_max
main_min:main_min.o find_min.o #不执行 gcc main_min.o find_min.o -o main_min main_max.o:main_max.c #执行 gcc -c main_max.c -o main_max.o
find_max.o:find_max.c #执行 gcc -c find_max.c -o find_max.o main_min.o:main_min.c #不执行 gcc -c main_min.c -o main_min.o find_min.o:find_min.c #不执行 gcc -c find_min.c -o find_min.o
|
解决方法:使用all指令,将两个最终可执行文件作为all的依赖
all:main_max main_min #第一步执行
main_max:main_max.o find_max.o #执行 gcc main_max.o find_max.o -o main_max
main_min:main_min.o find_min.o #执行 gcc main_min.o find_min.o -o main_min main_max.o:main_max.c #执行 gcc -c main_max.c -o main_max.o
find_max.o:find_max.c #执行 gcc -c find_max.c -o find_max.o main_min.o:main_min.c #执行 gcc -c main_min.c -o main_min.o find_min.o:find_min.c #执行 gcc -c find_min.c -o find_min.o
|