makefile----学习笔记总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gc0823/article/details/50418914

什么是 makefile?

     makefile是一套编译规则,关系到整个工程,方便于大型项目,makefile 带来的好处就是——“自动化编译”,固化了源代码之间的关系,只要写好,那么只需要一个 make 命令(调用make命令就会去找makefile文件进行编译),整个工程完全自动编译,极大的提高了软件开发的效率。


默认make命令的文件可以命名为:makefile   Makefile  GNUmakefile

若想任意命名时,加上make  -f  任意命名的文件名


makefile文件的规则:

                                         目标:依赖关系

                                                         命令

目标:一般就是make命令后面可以所跟的目标,eg  make install ,目标就是install

依赖关系:就是实现目标必须先要完成的事情

命令:任意的shell命令,命令前可以加@表示不输出命令本身,默认或输出命令本身,且命令前必须是至少一个tab键

执行make 相当于执行makefile文件中的第一条规则,且在一个目录下执行make调用的是本目录的makefile文件,不同目录下make的内容不同


make决定编译的要素:时间,会比较二进制文件(执行文件)跟源代码文件的时间,如果源码时间新,则必须重新编译


内置变量:

$@:表示规则中的目标文件集。

$%:仅当目标是函数库文件中,表示规则中的目标成员名。

$<:依赖目标中的第一个目标名字。

$^:所有的依赖目标的集合。以空格分隔。如果在依赖目标中有多个重复的,那个这个变量会去除重复的依赖目标,只保留一份。

$+:这个变量很像"$^",也是所有依赖目标的集合。只是它不去除重复的依赖目标。

$?:所有比目标新的依赖目标的集合。以空格分隔。


一个简单的例子:

例子上shell表示的makefile中的一个内置函数,$()调用变量,.PHONY表示makefile中的伪目标。


猜你喜欢

转载自blog.csdn.net/gc0823/article/details/50418914