阶段三就要完成了, 下面的课程将是我更所期待的
makefile在工程很多时可以用自动编译将效率提高很多
在用makefile之前需要安装make,本人是ubuntu系统所以直接
sudo apt-get install make
Makefile的本质是一个文件
在Makefile中的格式为:
<目标> : <依赖>
一个TAB<命令>
Makefile的 = 赋值的话有个易错点
1 | OBJ1 = A |
像上面的例子
自动变量
$@ 在我个人定义中这个就是匹配当前的目标
$< 依赖文件集合中的第一个文件.
$^ 所有依赖文件的集合
例如说
我创建了一个fun.h,fun.c以及main.c我一般编译的话直接gcc *.c就行了
1 | cc := gcc |
疑惑点:
为什么OBJECT可以被赋多个值
答: Makefile中的变量赋值类似与c语言中的宏
Makefile静态模式
Makefile的静态模式指的是一种自动编译模式
1 | <targets ...> : <target-pattern> : <prereq-patterns...> |
示例:
1 | $(OBJS) : %.o : %.c |
伪目标.PHONY:
当makefile目录下有一个和目标相同的文件时
1 | .PHONY |
指定头文件:
linux中一般通过"-I"
1 | -I /home/linux/include |
Makefile中常见写法:
1 | CFLAGS = -I /home/linux/include |
指定库文件路径:
linux中一般通过"-L"
1 | LDFLAGS = -L /usr/lib |