make0创建之始主要用于大型软件(C/C++语言等)项目的构建。因为make工具可以自动确定一个大型程序中哪些部分需要重新编译,并发出适当的命令重新编译它们。可以极大的减轻维护项目编译脚本的负担。
当前还是有许多项目使用make和Makefile来完成软件的编译安装,一个良好维护的Makefile的项目通常使用如下的命令来完成编译安装:
注解
对于现代的C/C++项目,建议您使用CMake1作为构建系统。
makeMakefile简介
如果需要使用make那么您需要创建Makefile告诉make它所需要的运行规则。
Makefile规则
Makefile是基于文件规则的引擎。
一个规则通常由target目标(文件),prerequisites依赖文件(目标)以及recipe(一系列命令)组成。
示例如下:
您可以使用:makebuild来构建demo,makerun直接运行。
注解
关于make和Makefile的相关知识,可以阅读GNUmake0文档。
为什么使用Makefile?
Makefile主要有以下几个优点:
基于文件的规则引擎
开箱即用久经考验
几乎所有平台(除Windows平台)都自带了make,自年2make在贝尔实验室开发以来,已经经受住了四十多年的考验。
shell的无缝集成
兼容任何命令行工具。只要能在命令行中完成的,都可以在Makefile中完成。Makefile可以作为项目级别的alias工具。
编写简单容易理解
对于熟悉shell脚本的开发者而言,Makefile编写简单,代码也很容易理解。
在项目中使用Makefile
小型项目中使用
在小型项目中,Makefile可以作为命令行快速执行工具,它具有如下优点:
可靠的重现
减轻人员的记忆负担
减小需要输入的文字数量
命令行自动补全功能
例如:
只需要在命令行输入makeformat即可完成整个项目代码的自动格式化。
根据不同的构建需要,使用不同的makebuild-xxx即可(无需记忆复杂的构建命令)。
注解
在需要更改编译选项、设置的时候,只需一个人更改提交到版本控制系统,其他人员直接同步即可。
大型项目中使用
在大型项目中,Makefile通常需要分成多个模块(每个模块实现相应的功能):
例如:
主Makefile引入其他的模块即可,
Makefile小技巧
DEFAULT_GOAL
设置默认目标,例如:.DEFAULT_GOAL:=help,直接执行make则相当于makehelp
PHONYFORCE
对于非编译的项目,通常目标都不是真实的文件(例如:makeformat格式化代码),这时候可以使用PHONY和FORCE联合来保证目标的执行。
自定义过程
对于常用的一些固定流程,我们转换成过程供我们调用,例如:
执行make结果如下:
原文链接:
转载请注明:http://www.0431gb208.com/sjszlfa/7743.html