makefile编写
功能
makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,不同产商的make各不相同,也有不同的语法,但其本质都是在“文件依赖性”上做文章。Makefile执行之后所进行的操作是编译和链接,就是先将源文件编译为中间文件(object file),然后把大量的中间文件链接起来合成执行文件
规则
- 如果这个工程没有编译过,那么我们的所有源文件都要编译并被链接(按需)
- 如果这个工程某些源文件被修改,那只编译被修改的源文件,并链接目标程序
- 如果这个工程的头文件被改变了,那么我们需要编译引用了这几个头文件的源文件,并链接目标程序
基本格式
1 | target ...: prerequisites ... |
target
目标文件,是命令执行后生成的目标,可以是Object File
,也可以是执行问价,还可以是一个标签,类似于clean
prerequisites
依赖,也就是生成目标文件所需要的文件或者是目标command
make
需要执行的指令,可以是任意的shell
指令
核心规则
- target这一个或多个的目标文件依赖于prerequisites中的文件,其生成规则定义在command中
- 如果prerequisites中如果有一个以上的文件比target文件要新的话,command所定义的命令就会被执行
清除
使用 make
清除所有生成的目标文件
1 | clean: |
注释
makefile
文件中的注释格式为 #
1 | target ...: prerequisites ... # target1 |
使用
在使用之前需要先安装 make
1 | sudo apt install make |
然后进入 makefile
文件就可以编辑了,但是需要注意,命名必须是 makefile
注意在命令前一定需要 tab
键
例子
1 | main: hello.c complex.o |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LuosBlog!