当前位置: 首页 > news >正文 wordpress网站模板下载失败网站中的作用 news 2025/11/3 20:29:44 wordpress网站模板下载失败,网站中的作用,wordpress公告模板,网站上线需要多久Linux中的make与Makefile#xff1a;项目自动化构建工具 在Linux及类Unix系统中#xff0c;make是一种广泛使用的自动化构建工具#xff0c;它通过读取和执行Makefile#xff08;或makefile#xff0c;文件名不区分大小写#xff09;中的指令来自动化编译和构建程序。Ma…Linux中的make与Makefile项目自动化构建工具 在Linux及类Unix系统中make是一种广泛使用的自动化构建工具它通过读取和执行Makefile或makefile文件名不区分大小写中的指令来自动化编译和构建程序。Makefile定义了构建过程中需要执行的命令、依赖关系以及构建目标极大地简化了复杂项目的构建过程。本文将深入探讨make命令、Makefile的编写规则、常用函数以及高级特性帮助读者更好地理解和使用这一强大的工具。 一、make命令简介 make命令是一个根据Makefile中的指令来自动编译和链接程序的工具。它首先会检查所有需要编译的源文件以及它们所依赖的库或文件是否是最新的如果不是则根据Makefile中的规则重新编译这些文件。这种方式避免了不必要的编译提高了构建效率。 二、Makefile的基本结构 Makefile由一系列规则rules组成每个规则定义了如何生成一个或多个目标文件target。规则的基本格式如下 target: dependenciescommand...target规则的目标通常是文件名也可以是一个伪目标如clean。dependencies目标的依赖文件列表用于判断目标是否需要重新构建。如果依赖文件比目标文件新或者目标文件不存在则执行命令。command当目标需要被构建时执行的命令。每个命令前必须有一个制表符Tab而不是空格。 三、Makefile的编写规则 1. 变量 Makefile中可以使用变量来存储文件名、编译选项等以便在多处重复使用。变量定义和引用的方式如下 CCgcc CFLAGS-Wall -ghello: hello.o$(CC) $(CFLAGS) -o hello hello.ohello.o: hello.c$(CC) $(CFLAGS) -c hello.c2. 自动变量 make还定义了一系列自动变量用于在规则中代表文件名、依赖列表等。常用的自动变量包括$代表目标文件名、$代表第一个依赖文件名、$^代表所有依赖文件名等。 3. 伪目标 伪目标不是文件名而是一个标签用于执行一些特定的操作如清理构建文件。伪目标后面通常使用.PHONY来声明以避免与同名文件冲突。 .PHONY: cleanclean:rm -f *.o hello4. 模式规则 模式规则允许为符合特定模式的文件定义构建规则而不需要为每个文件单独编写规则。模式规则使用%作为通配符。 %.o: %.c$(CC) $(CFLAGS) -c $ -o $四、Makefile的常用函数 Makefile支持多种内置函数用于字符串处理、文件名操作、条件判断等。 wildcard用于查找符合特定模式的文件名列表。patsubst用于模式替换将符合模式的字符串替换为另一个字符串。if、ifeq、ifneq、ifdef、ifndef用于条件判断。 五、高级特性 1. 递归make 在大型项目中可能会将项目拆分成多个子项目每个子项目都有自己的Makefile。此时可以在顶层Makefile中调用子项目的Makefile实现递归构建。 subdir:cd subdir $(MAKE)2. 静态模式规则 静态模式规则是模式规则的一种扩展它允许更精确地指定目标和依赖的模式。 objects foo.o bar.oall: $(objects)$(objects): %.o: %.c$(CC) -c $(CFLAGS) $ -o $3. 变量覆盖 在命令行中可以通过-e选项或直接在命令行中指定变量值来覆盖Makefile中的变量值。 make CCclang4. 隐式规则 make内置了许多隐式规则用于编译和链接C、C等语言的源文件。当Makefile中没有为特定目标定义规则时make会尝试使用隐式规则来构建目标。 六、实践案例 假设我们有一个简单的C语言项目包含main.c、utils.c和utils.h三个文件我们希望使用make和Makefile来自动化编译和构建这个项目。下面是一个可能的Makefile示例 # 定义编译器和编译选项 CCgcc CFLAGS-Wall -g# 定义项目中的源文件和目标文件 SRCSmain.c utils.c OBJS$(SRCS:.c.o) TARGETmyapp# 默认目标即当不指定目标时执行的操作 all: $(TARGET)# 链接目标文件生成可执行文件 $(TARGET): $(OBJS)$(CC) $(CFLAGS) -o $ $^# 编译C源文件生成目标文件 %.o: %.c$(CC) $(CFLAGS) -c $ -o $# 伪目标用于清理构建过程中生成的文件 .PHONY: cleanclean:rm -f $(OBJS) $(TARGET)# 依赖关系如果项目中有头文件则不需要显式写出但保持其最新状态很重要 # 注意这里不直接写出头文件依赖因为make会基于时间戳自动检查 # 但对于复杂的项目可能需要使用-MM等gcc选项生成依赖关系# 如果需要自动处理头文件依赖可以在Makefile中加入如下规则示例 # 注意这里只是一个简单的示例实际项目中可能需要更复杂的逻辑 %.d: %.cset -e; rm -f $; \$(CC) -MM $(CFLAGS) $ $.$$$$; \sed s,\($*\)\.o[ :]*,\1.o $ : ,g $.$$$$ $; \rm -f $.$$$$# 引入所有.d文件如果存在这些文件包含了文件的依赖关系 -include $(SRCS:.c.d)然而上面的%.d规则及其sed命令是处理头文件依赖的一种较为复杂的方式主要用于生成.d文件这些文件包含了源文件和目标文件以及它们所依赖的头文件的列表。在上面的示例中如果源文件更改或依赖的头文件更改则.d文件也会更新并且make会基于这些更新来重新编译相应的源文件。 但是对于简单的项目或刚开始使用make的用户来说可能不希望一开始就引入这么复杂的逻辑。在实际应用中可以根据项目的复杂度和需求来选择是否自动生成依赖关系。 对于上面的简单项目如果头文件如utils.h更改用户通常需要手动触发重新编译。但在更复杂的项目中使用自动生成依赖关系的方法可以极大地简化构建过程并减少因忘记更新依赖关系而导致的编译错误。 七、总结 make和Makefile是Linux及类Unix系统中不可或缺的项目自动化构建工具。通过编写Makefile开发者可以定义项目的构建规则、依赖关系以及编译选项从而实现高效的自动化构建。本文介绍了make命令的基本用法、Makefile的编写规则、常用函数以及高级特性并给出了一个简单项目的Makefile示例。希望这些内容能够帮助读者更好地理解和使用make和Makefile提高项目构建的效率和质量。 文章转载自: http://www.morning.fjkkx.cn.gov.cn.fjkkx.cn http://www.morning.thbkc.cn.gov.cn.thbkc.cn http://www.morning.cklgf.cn.gov.cn.cklgf.cn http://www.morning.slkqd.cn.gov.cn.slkqd.cn http://www.morning.sdktr.com.gov.cn.sdktr.com http://www.morning.fyglr.cn.gov.cn.fyglr.cn http://www.morning.mkxxk.cn.gov.cn.mkxxk.cn http://www.morning.gyzfp.cn.gov.cn.gyzfp.cn http://www.morning.dtcsp.cn.gov.cn.dtcsp.cn http://www.morning.mqxzh.cn.gov.cn.mqxzh.cn http://www.morning.tmjhy.cn.gov.cn.tmjhy.cn http://www.morning.gynlc.cn.gov.cn.gynlc.cn http://www.morning.gjlst.cn.gov.cn.gjlst.cn http://www.morning.nxpqw.cn.gov.cn.nxpqw.cn http://www.morning.wjhpg.cn.gov.cn.wjhpg.cn http://www.morning.smxyw.cn.gov.cn.smxyw.cn http://www.morning.rgfx.cn.gov.cn.rgfx.cn http://www.morning.pwfwk.cn.gov.cn.pwfwk.cn http://www.morning.chmcq.cn.gov.cn.chmcq.cn http://www.morning.btwrj.cn.gov.cn.btwrj.cn http://www.morning.kdrly.cn.gov.cn.kdrly.cn http://www.morning.rtsx.cn.gov.cn.rtsx.cn http://www.morning.qnkqk.cn.gov.cn.qnkqk.cn http://www.morning.nbybb.cn.gov.cn.nbybb.cn http://www.morning.fhhry.cn.gov.cn.fhhry.cn http://www.morning.hwnnm.cn.gov.cn.hwnnm.cn http://www.morning.mbpzw.cn.gov.cn.mbpzw.cn http://www.morning.mkczm.cn.gov.cn.mkczm.cn http://www.morning.kjmcq.cn.gov.cn.kjmcq.cn http://www.morning.nfbkz.cn.gov.cn.nfbkz.cn http://www.morning.blqgc.cn.gov.cn.blqgc.cn http://www.morning.rkwwy.cn.gov.cn.rkwwy.cn http://www.morning.fbdkb.cn.gov.cn.fbdkb.cn http://www.morning.rjmd.cn.gov.cn.rjmd.cn http://www.morning.pffqh.cn.gov.cn.pffqh.cn http://www.morning.dmwjl.cn.gov.cn.dmwjl.cn http://www.morning.sgrdp.cn.gov.cn.sgrdp.cn http://www.morning.ykmtz.cn.gov.cn.ykmtz.cn http://www.morning.xqffq.cn.gov.cn.xqffq.cn http://www.morning.mxnfh.cn.gov.cn.mxnfh.cn http://www.morning.gjmll.cn.gov.cn.gjmll.cn http://www.morning.rshijie.com.gov.cn.rshijie.com http://www.morning.tpnch.cn.gov.cn.tpnch.cn http://www.morning.dongyinet.cn.gov.cn.dongyinet.cn http://www.morning.tclqf.cn.gov.cn.tclqf.cn http://www.morning.jpmcb.cn.gov.cn.jpmcb.cn http://www.morning.mpscg.cn.gov.cn.mpscg.cn http://www.morning.wdhhz.cn.gov.cn.wdhhz.cn http://www.morning.dmsxd.cn.gov.cn.dmsxd.cn http://www.morning.sgfpn.cn.gov.cn.sgfpn.cn http://www.morning.smfbw.cn.gov.cn.smfbw.cn http://www.morning.fbdtd.cn.gov.cn.fbdtd.cn http://www.morning.fqqlq.cn.gov.cn.fqqlq.cn http://www.morning.lgnrl.cn.gov.cn.lgnrl.cn http://www.morning.dgwrz.cn.gov.cn.dgwrz.cn http://www.morning.jlnlr.cn.gov.cn.jlnlr.cn http://www.morning.rqkk.cn.gov.cn.rqkk.cn http://www.morning.ghslr.cn.gov.cn.ghslr.cn http://www.morning.frsbf.cn.gov.cn.frsbf.cn http://www.morning.fqyxb.cn.gov.cn.fqyxb.cn http://www.morning.bswxt.cn.gov.cn.bswxt.cn http://www.morning.seoqun.com.gov.cn.seoqun.com http://www.morning.sftrt.cn.gov.cn.sftrt.cn http://www.morning.zwfgh.cn.gov.cn.zwfgh.cn http://www.morning.bryyb.cn.gov.cn.bryyb.cn http://www.morning.mplld.cn.gov.cn.mplld.cn http://www.morning.xqmd.cn.gov.cn.xqmd.cn http://www.morning.fdjwl.cn.gov.cn.fdjwl.cn http://www.morning.bwkzn.cn.gov.cn.bwkzn.cn http://www.morning.qlrwf.cn.gov.cn.qlrwf.cn http://www.morning.jzklb.cn.gov.cn.jzklb.cn http://www.morning.mslsn.cn.gov.cn.mslsn.cn http://www.morning.tzlfc.cn.gov.cn.tzlfc.cn http://www.morning.ndzhl.cn.gov.cn.ndzhl.cn http://www.morning.rwjh.cn.gov.cn.rwjh.cn http://www.morning.lcbt.cn.gov.cn.lcbt.cn http://www.morning.crqpl.cn.gov.cn.crqpl.cn http://www.morning.nkbfc.cn.gov.cn.nkbfc.cn http://www.morning.kmlmf.cn.gov.cn.kmlmf.cn http://www.morning.xlbtz.cn.gov.cn.xlbtz.cn 查看全文 http://www.tj-hxxt.cn/news/274666.html 相关文章: 温州网站建设小公司帮企业做网站前景怎么样 亚马逊站外推广平台有哪些珠宝营销型网站设计 网站改版 方案移动端的网站怎么做的 定制旅游网站建设成都免费制作广州网站 金华英文网站建设做网站需要哪些技能 制作网站比较大的几家公司东莞公司网站开发 湛江网站开发哪家专业攸县网站制作公司 新的房地产网站怎么做SEO织梦网站地图怎么做xml 个体户可以做网站吗友情链接平台站长资源 网站设计机构有哪些最新最好玩的网页游戏排行榜 北京西站列车时刻表最新上云网站做等保 网站做网站做任务南宁网站建设网站 淄博学校网站建设定制天天外链官网 兰州微商城搭建seo服务 专业网站建设人工智能研发青岛建设交易中心网站首页 网站建设预算和维护腾讯云网站制作教程 怎样做网站平台吉林省吉林市永吉县 三河网站建设公司网站建设 秦皇岛公司 3g版网站制作湖南企业名录大全 个人网站建设策划书怎么写网络规划设计师培训机构 教育在线网站怎样做直播移动端网站开发的书 招商外包公司怎么收费南通优化网站收费标准 做网站包头免费测名打分测名字打分 做网站的案例第二章 网站建设 高速建设材料在哪个网站购买移动端网站交互效果最好的 网站建设难点分析数字营销证书 免费不收费网站有哪些网络营销产品的整体概念 电白网站建设公司网站建设方案文档 整站模板科技英语 住房和城乡建设部网站官网建立公司网站视频