Makefile的概述
创始人
2024-06-01 17:41:56
0
  1. 什么是make

make 是个命令,是个可执行程序,用来解析Makefile文件的命令,这个命令存放在 /usr/bin

make概述

1.GUN make是一种代码维护工具
2.make 工具会根据makefile文件定义的规则和步骤,完成整个软件项目的代码维护工作。
3.一般用来简化编译的工作,可以极大地提高软件开发的效率。
4.windows 下一般由集成开发环境自动生成
5.linux 下需要由我们按照其语法自己编写

make主要解决两个问题:

1.大量代码的关系维护
大项目中源代码比较多,手工维护、编译时间长而且编译命令复杂,难以记忆及维护,把代码维护命令及编译命令写在makefile文件中,然后再用make工具解析此文件自动执行相应的命令,可实现代码的合理编译
2.减少重复编译时间
在改动其中一个文件的时候,能判断那些文件被修改过,可以只对该文件进行重新编译,然后重新链接所有的目标文件,节省时间。

  1. 什么是makefile?

makefile 是个文件,这个文件中描述了咱们程序的编译规则
执行make命令的时候,make命令会在当前目录下找makefile文件,根据makefile文件里的规则,编译咱们的程序。
注意:Makefile 规则文件是咱们程序员根据自己的程序,编写的编译规则

3.采用Makefile的好处

(1)简化编译程序的时候输入得命令,编译的时候只需要敲make命令就可以了
(2)可以节省编译时间,提高编译效率

makefile解决两大问题:大量代码维护,减少重复编译事件

4.makefile的语法规则

目标:依赖文件列表
命令列表
gcc main.c fun.c -o main
目标:就是需要生成的文件
依赖文件:通过依赖文件 生成 目标文件
命令列表:实现 将依赖文件 生成 目标文件

编写一个简单的:makefile

make 默认在工作目录中寻找名为 GNUmakefile、makefile、Makefile 的文件作为
makefile 输入文件 make -f 自定义makefle文件名 make 工具默认会实现 makefile 文件内的第一个目标。 make 目标 ----->选择目标执行

稍微高级:makefile

5.makefile的变量分类

1、自定义变量

1 变量名=变量值

引用变量: $(变量名)或${变量名}

CC=gcc
target=main
obj=main.o fun.o
$(target):$(obj)$(CC) $(obj) -o $(target)
main.o:main.c$(CC) -c main.c -o main.o
fun.o:fun.c$(CC) -c fun.c -o fun.o
clean:rm *.o main注意:注意tab(空格)

2、系统环境变量

make 可以识别系统环境变量,在 makefile 中可直接读取或修改拷贝后的变量。
查看环境变量:env

3、预定义变量

makefile 中有许多预定义变量,这些变量具有特殊的含义,可在makefile直接使用。

高级的makefil

CC=gcc
target=main
obj=main.o fun.o
flags=-Wall
$(target):$(obj)$(CC) $^ -o $@ $(flags)
%.0:%.c$(CC) -c $< -o $@ $(flags)
clean:rm $(obj)  $(target)

相关内容

热门资讯

surface2 接口-Sur... 嘿,大家好!今天我要聊聊我最近超级迷恋的一个小玩意儿——Surface2接口!这东西,简直是我的数字...
wmiprvse.exe sy... 大家好,今天我要和大家聊聊一个听起来有点高大上,但实际上我们每天都在和它打交道的东西——wmiprv...
卢瓦loic下载-卢瓦 Loi... 嘿,朋友们,今天咱们来聊聊那个让人心跳加速的话题——卢瓦Loic下载!这可不是普通的下载,这是一场关...
双专线叠加千兆路由器:解决网速... 哎呀,说到这个双专线叠加千兆路由器,我这心里就激动得不行!你知道吗,这玩意儿简直就是网络世界的超级英...
探险队长带你揭开名字查询身份证... 大家好,我是你们的探险队长,今天我们要一起潜入一个神秘的世界——名字查询身份证号码查询系统。这听起来...
绿云系统下载:一场没有硝烟的战... 嘿,大家好,我今天真是有一肚子话要说!绿云系统下载,这个名字听起来就像是从天而降的神秘礼物,对吧?我...
winebottler怎么使用... 大家好,我是那个总是对新鲜玩意儿充满好奇的小王。今天要跟大家聊的,是那个让我的Mac变得超级全能的神...
家庭省电宝怎安装-家庭省电宝安... 哎呀,说到家庭省电,我可是有好多小窍门呢!今天就来聊聊我家那个小宝贝——家庭省电宝的安装,简直是太简...
ecshop模板堂去除方法-去... 嘿,大家好,我今天真是气不打一处来!你们有没有试过折腾那个ECShop模板堂?我告诉你,简直是噩梦一...
共享总线技术:电子设备间的高速... 嘿朋友们,今天咱们聊聊这个“共享总线”技术,这可不是什么高深莫测的东西,其实它就是一条电子设备之间相...
呼吸道合胞病毒 用文明-呼吸道... 哎呀,说到这个呼吸道合胞病毒,真是让人头疼不已!这小东西,看不见摸不着的,却能在我们不经意间悄悄地侵...
surface1和2的区别-S... 哟,大家好呀!今天咱们就来聊聊那些让人又爱又恨的Surface1和Surface2。这两个小家伙,虽...
foobar2000 wasa... 嘿,大家好!今天我得说说我和Foobar2000还有WASAPI的那点事儿。你们知道吗,每次我打开这...
findata破解版-Find... 嘿,大家好!今天咱们聊点刺激的,说说那个最近在圈子里火得不行的Findata破解版。你们是不是也听说...
initization fai... 哎,你知道吗?今天我真是倒了八辈子霉了!就在我以为一切都要开始的时候,砰!一切都崩了!对,就是那个该...
华硕e403n 改win7-华... 哎呀,说到这事儿我就激动得不行!你敢信?我那台老古董华硕e403n,本以为它只能乖乖地用着那个什么w...
0x0000000050电脑蓝... 哎呀,我的天啊!刚刚还在激情四射地玩游戏,电脑突然就蓝屏了,屏幕上那个恐怖的0x0000000050...
肛瘘手术 多长时间不疼-肛瘘手... 哎呀,说到肛瘘手术,真是让人头疼又屁股疼!手术后那疼痛,简直让人怀疑人生。但是,亲们,别急,疼痛总会...
windows bluetoo... 嘿,大家好!今天我想聊聊我生活中的一个小英雄——Windows蓝牙。你知道吗,这个小东西真的是我的生...
阿西吧韩国什么意思-阿西吧韩国... 哎呀呀,说到“阿西吧韩国”,你是不是也和我一样,心里有点小激动?这可不是什么正式的词汇,但它在年轻人...