Makefile是什么?初学者的Make指南

在这里插入图片描述

GUN Make in Detail for Beginners

本篇主要内容翻译自 初学者的Make指南,也添加了一些其他内容。

Make 简介

​ 一个较大的项目往往包含几千行代码,数个源文件,储存在不同的子目录下。除此之外,还可能包含多个组件。这些组件之间存在着复杂的内部依赖。举个例子:

为了编译组件X,我们首先需要编译Y

为了编译组件Y,我们首先需要编译Z

……

假设我们对X做了一点点修改,却需要手动从Z开始一个个编译,不仅麻烦耗时,还容易出错。

这时候 make 就来解决这个问题啦。我们可以为项目创建Makefile文件(小写的makefile也可以),其中规定了组件之间的依赖,因此在编译的时候会按照满足组件间依赖关系的顺序。

当只对项目中的某个组件A修改了一点点时,make只会重新编译被修改的组件A和任何依赖组件A的其它组件。

除了组件之间的依赖关系,Makefile文件还能够描述项目结构,源文件位置,编译参数,输出位置等内容。当执行make命令时,就会按照当前目录下的Makefile来编译项目。

Makefile的编写类似shell脚本,在之后会详细介绍

一个简单的项目实例

我们用C语言编写一个 “Hello World” 项目,并用make来编译它,在Makefile里设置编译后的可执行文件位置。以下是项目代码

module.h

# include <stdio.h>
void sample_func()

module.c

# include "module.h"
void sample_func() {
   
  printf("Hello World!\n");
}

main.c

# include "module.h"
void sample_func();
int main() {
   
  sample_func();
  return 0;
}

项目目录:

HelloWorld

├── Makefile

├── main.c

├── module.c

└── module.h

那么如果要手动编译HelloWorld项目,生成一个能输出 Hello World! 的可执行程序,该怎么做呢?

依次在当前目录输入以下命令:

gcc -I .
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值