博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Makefile】初体验
阅读量:3923 次
发布时间:2019-05-23

本文共 1219 字,大约阅读时间需要 4 分钟。

微信搜索【编程笔记本】

让我们一起来学习编程吧

今天来跟大家分享一下 Makefile 的入门教程。

all:book0 book1 book2                # 所有要编译的文件book0:book0.c                        # 编译 book0 时依赖的文件是 book0.c                                      # 再次执行 make 命令时,若 book0.c 未改变,则不编译 book0    gcc -g -o book0 book0.c          # 编译动作                                     # 行前必须是一个 Tab ,不能是空格book1:book1.c    gcc -g -o book1 book1.cbook2:book2.c    gcc -g -o book2 book2.cclean:                               #  当执行 make clean 命令时,将执行如下指令	rm -rf book0 book1 book2

上面就写好了一个简单的 Makefile 了。有一点值得注意的是:

  • 执行 make 指令时,默认是执行 make all ,即编译所有文件;
  • 执行 make book0 指令时,编译的是 book0.c 一个文件;
  • 执行 make clean 时,将会删除所有的可执行文件。

也就是说,Makefile 中的编译动作是可以分标签进行的。

微信搜索【编程笔记本】

让我们一起来学习编程吧

上面的编译动作都是我们逐个写上去的,如果我们需要修改所有文件的编译选项,如添加 -std=c99 ,此时我们只能逐条添加,这样势必会变得低效。下面一种书写方式将会高效许多。

CC=gcc                                     # 变量,其实质是字符串的替换FLAG=-g -std=c99all:book0 book1 book2book0:book0.c    $(CC) $(FLAG) -o book0 book0.c         # 使用变量方法:$(变量)book1:book1.c    $(CC) $(FLAG) -o book1 book1.cbook2:book2.c    $(CC) $(FLAG) -o book2 book2.cclean:	rm -rf book0 book1 book2

在这种书写方式下,如果我们需要批量修改编译选项时,只需修改 FLAG 变量的内容即可。这种变量的本质其实就是单纯的字符串替换。

Makefile 可以写得非常强大和复杂,但无非就是上面这种形式在代码量上增加而已,本质就是如此。

微信搜索【编程笔记本】

让我们一起来学习编程吧

转载地址:http://phkgn.baihongyu.com/

你可能感兴趣的文章
Net5 已经来临,让我来送你一个成功
查看>>
System.Text.Json中时间格式化
查看>>
怎么将SVG转成PNG(.NET工具包编写)
查看>>
为什么曾经优秀的人突然变得平庸?
查看>>
.NET 5 中的隐藏特性
查看>>
.NET5都来了,你还不知道怎么部署到linux?最全部署方案,总有一款适合你
查看>>
我画着图,FluentAPI 她自己就生成了
查看>>
BenchmarkDotNet v0.12x新增功能
查看>>
使用 .NET 5 体验大数据和机器学习
查看>>
C# 中的数字分隔符 _
查看>>
使用 docker 构建分布式调用链跟踪框架skywalking
查看>>
Github Actions 中 Service Container 的使用
查看>>
别在.NET死忠粉面前黑.NET5,它未来可期!
查看>>
Winform 进度条弹窗和任务控制
查看>>
部署Dotnet Core应用到Kubernetes(二)
查看>>
持续交付二:为什么需要多个环境
查看>>
FreeSql接入CAP的实践
查看>>
浅析 EF Core 5 中的 DbContextFactory
查看>>
听说容器正在吃掉整个软件世界?
查看>>
真实经历:整整一年了,他是这样从程序员转型做产品经理的
查看>>