在linux和unix中,有一个强大的实用程序,叫make,可以用它来管理多模块程序的编译和链接,直至生成可执行文件。
make程序需要一个编译规则说明文件,称为makefile,makefile文件中描述了整个软件工程的编译规则和各个文件之间的依赖关系。
makefile就像是一个shell脚本一样,其中可以执行操作系统的命令,它带来的好处就是我们能够实现“自动化编译”,一旦写好,只要一个make命令,整个软件功能就完全自动编译,提高了软件开发的效率。
make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说大多数编译器都有这个命令,使用make可以是重新编译的次数达到最小化。
makefile文件的规则可以非常复杂,比C程序还要复杂,平常使用实际用不了那么多
接下来,介绍它的使用方法:
该文件夹下含有很多个c文件,如果我们想要每个c文件生成对应的可执行文件,则需要在控制台敲编译命令很多次,而且每次重新编译都需要重新敲命令
第一种方法:在该文件夹下创建makefile文件,内容如下:
all:book1 book2 book3
book1:book1.c
gcc -o book1 book1.c
book2:book2.c
gcc -o book2 book2.c
book3:book3.c
gcc -o book3 book3.c
clean:
rm -rf book1 book2 book3
以后每次编译,都只需要执行make就可以了,但是加一个c文件就得在makefile中再新增一个target
第二种方法:
OBJECT=book1 book2 book3
all:$(OBJECT)
%:%.c
gcc -o $@ $^
clean:
rm -rf $(OBJECT)
使用通配符非常便利,可以识别文件夹下得目标文件名,按照我们写得规则,只需要2行代码就可以批量处理
第三种方法:
SOURCE=$(wildcard *.c)
OBJECT=$(patsubst %.c,%,$(SOURCE))
all:$(OBJECT)
%:%.c
gcc -o $@ $^
clean:
rm -rf $(OBJECT)
利用函数查找所有.c文件,存入变量,编写一次就再也不需要改动了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!