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)

相关内容

热门资讯

热点推荐“贝众乐游到底有没有透... 热点推荐“贝众乐游到底有没有透视挂吗”原来真的有挂是一款可以让一直输的玩家,快速成为一个“必胜”的a...
热点推荐“88娱乐城到底有没有... 热点推荐“88娱乐城到底有没有透视挂吗”原来真的有挂;原来确实真的有挂(需添加指定薇7198902获...
热点推荐“传奇德州到底有没有透... 您好,传奇德州这款游戏可以开挂的,确实是有挂的,需要了解加微{7198902}很多玩家在这款游戏中打...
热点推荐“精品乐清麻将到底有没... 热点推荐“精品乐清麻将到底有没有透视挂吗”原来真的有挂是一款可以让一直输的玩家,快速成为一个“必胜”...
热点推荐“湘叶娱乐到底有没有透... 热点推荐“湘叶娱乐到底有没有透视挂吗”原来真的有挂1、让任何用户在无需AI插件第三方神器的情况下就能...
热点推荐“新友茶社到底有没有透... 您好,新友茶社这款游戏可以开挂的,确实是有挂的,需要了解加微{7198902}很多玩家在这款游戏中打...
热点推荐“网上斗牛到底有没有透... 亲,网上斗牛这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,网上斗牛的开挂软件,名...
热点推荐“雀悦诏安麻将到底有没... 雀悦诏安麻将这个游戏其实有挂的,确实是有挂的,需要了解加客服微信:【7198902】, 很多玩家在这...
热点推荐“棋牌室到底有没有透视... 您好:棋牌室确实真的有挂,软件加微信【7198902】确实是有挂的,很多玩家在这款游戏中打牌都会发现...
热点推荐“微友联盟到底有没有透... 亲,微友联盟这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,微友联盟的开挂软件,名...
热点推荐“众联到底有没有透视挂... 热点推荐“众联到底有没有透视挂吗”原来真的有挂1、让任何用户在无需AI插件第三方神器的情况下就能够完...
热点推荐“雀神麻将到底有没有透... 热点推荐“雀神麻将到底有没有透视挂吗”原来真的有挂是一款可以让一直输的玩家,快速成为一个“必胜”的a...
热点推荐“越记乡游到底有没有透... 热点推荐“越记乡游到底有没有透视挂吗”原来真的有挂;原来确实真的有挂(需添加指定薇7198902获取...
热点推荐“麻友圈2贵州麻将到底... 您好:麻友圈2贵州麻将确实真的有挂,软件加微信【7198902】确实是有挂的,很多玩家在这款游戏中打...
热点推荐“乐天棋牌到底有没有透... 热点推荐“乐天棋牌到底有没有透视挂吗”原来真的有挂是一款可以让一直输的玩家,快速成为一个“必胜”的a...
热点推荐“海星到底有没有透视挂... 您好:海星确实真的有挂,软件加微信【7198902】确实是有挂的,很多玩家在这款游戏中打牌都会发现很...
热点推荐“潮汕馆到底有没有透视... 您好:潮汕馆确实真的有挂,软件加微信【7198902】确实是有挂的,很多玩家在这款游戏中打牌都会发现...
热点推荐“乐享贵州麻将到底有没... 乐享贵州麻将这个游戏其实有挂的,确实是有挂的,需要了解加客服微信:【7198902】, 很多玩家在这...
热点推荐“汇友娱乐到底有没有透... 您好:汇友娱乐确实真的有挂,软件加微信【7198902】确实是有挂的,很多玩家在这款游戏中打牌都会发...
热点推荐“hhpoker脚本到... 热点推荐“hhpoker脚本到底有没有透视挂吗”原来真的有挂1、让任何用户在无需AI插件第三方神器的...