毕业论文
您现在的位置: 版本控制 >> 版本控制介绍 >> 正文 >> 正文

使用Makefilemake实现项目

来源:版本控制 时间:2024/9/11

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