make 命令


因为没有系统的学过c/c++,对于make一直都是见过没用过,最近很多项目里都用到,这里记录一下1

make 的概念

make即制作,就是“打包”“执行”一个项目,根据makefile里的内容,执行命令。

makefile

makefile就是包含一系列的规则的文件,make命令就是根据这些规则来执行的。
makefile的格式如下:

targer : prerequisites
[tab] command

其中targer是目标,prerequisites是前置条件,第二行必须由tab起,然后接具体的命令
其中目标是必需的,其他都是可选的。

target

目标通常是文件名,也可以是一个伪目标,也就是具体操作的名字。
文件名是默认的选择,所以如果有一个伪目标的名字等于文件名,命令就不会执行了,所以
需要使用.PHONY: 伪目标来声明目标名。

前置条件

前置条件通常是一组文件名,用空格分割,它指定来目标是否重新构建的判断标准,只要有一个前置条件不存在,或者有更新(文件的修改时间),目标都会重建。

命令

每行命令前都必须有一个tab,还可以使用.RECIPEPREFIX = >来指定使用>代替tab键。
每一行命令都是单独的shell,所以隔行定义的变量是无法读取的,一个解决办法就是写在一行,用;分割。
另一个办法就是在换行前加\转义。
还有一种办法就是在命令前加上.ONESHELL


  目录