0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【Makefile】简单实用的Makefile模板来了

嵌入式物联网开发 来源:嵌入式物联网开发 作者:嵌入式物联网开发 2022-08-31 12:46 次阅读

今天给大家介绍一个简单实用的Makefile模板,也可以当做学习Makefile核心内容的范例,里面都有详细的注释,清晰明了。

这个Makefile主要解决以下需求:

###################################################################################### # 需求: #1.编译输出的所有文件均放在一个output目录,.o文件的相对目录应与源码的位置保持一致; #2.需要生成每个.c文件的头文件依赖,当.c文件为xxxx.c时,.o文件名为xxx.o,头文件依赖文件名为.xxx.o.d ######################################################################################

废话不多说,直接上内容:

#######################################################################################################
# 需求:
#1.编译输出的所有文件均放在一个output目录,.o文件的相对目录应与源码的位置保持一致;
#2.需要生成每个.c文件的头文件依赖,当.c文件未xxxx.c时,.o文件名为xxx.o,头文件依赖文件名为.xxx.o.d 
#######################################################################################################

# 定义输出目录
OUTPUT		:= output
OUTPUT_BIN	:= $(OUTPUT)/test

# 定义.c文件列表
SRC-C		+= ./src/main.c 
SRC-C		+= ./src/test1/test1.c 
SRC-C		+= ./src/test2/test2.c 
SRC-C		+= ./src/test3/test3.c 

# 求出.o文件列表 
SRC-O		+= $(patsubst %.c, $(OUTPUT)/%.o, $(SRC-C))

# 求出.o文件的头文件依赖列表  # output/./src/test1/test1.o ==> output/./src/test1/.test1.o.d
SRC-O-DEPS	+= $(foreach n, $(SRC-O), $(dir $(n)).$(notdir $(n).d))

# Entry for Makefile
all: info gen_output gen_bin 
	@echo 
	@echo Generate $(OUTPUT_BIN) done !
	@echo 

# Show some variables	
info:
	@echo 
	@echo SRC-C=$(SRC-C)
	@echo SRC-O=$(SRC-O)
	@echo SRC-O-DEPS=$(SRC-O-DEPS)
	@echo 

# Generate output bin
gen_bin: $(SRC-O) $(SRC-O-DEPS)
	touch $(OUTPUT_BIN)

# Create .o files	
$(OUTPUT)/%.o:
	test -d $(dir $@) || mkdir -p $(dir $@)
	touch $@
	
# Create .o dependent files
$(OUTPUT)/.%.o.d: 
	touch $@

# Create output path when it's not exist !	
gen_output:
	test -d $(OUTPUT) || mkdir -p $(OUTPUT)

# Clean builded output files	
clean:
	rm -rf $(OUTPUT)
	
.PHONY: info gen_output clean

工程的文件目录结构如下图:

img点击并拖拽以移动

编辑

工程目录执行make即可开始编译,执行make clean即可清除编译文件。

img点击并拖拽以移动

编辑

值得注意的是,Makefile里面都是模拟生成.o .o.d .bin等文件,在实际工程运用中,需要根据自己的实际情况加以修改。

使用过程如有发现问题,可在评论席提出,期待您的宝贵建议,谢谢。


延伸阅读:

1.【Linux + Makefile】十分钟教你学会Makefile的FORCE

\2. 【Linux + Makefile】Makefile的高阶用法:解决C文件包含的头文件修改了,但C文件不重新编译的问题

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模板
    +关注

    关注

    0

    文章

    106

    浏览量

    20479
  • Makefile
    +关注

    关注

    1

    文章

    121

    浏览量

    19094
收藏 人收藏

    评论

    相关推荐

    Makefile中文教程 -下载

    Makefile中文教程,免费下载哦。
    发表于 03-25 08:57 66次下载

    教你写Makefile

    教你写Makefile 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,
    发表于 02-10 14:24 37次下载

    驾驭Makefile

    驾驭Makefile在网上你能找到很多关于Makefile的学习资料,但绝大部分给你的只是一个知识点,与将Makefile运用到项目中(尤其是大型项目)的差距非常的大。因为,将Makefile
    发表于 01-05 17:05 9次下载

    Makefile教程

    Linux开发必备的Makefile文件编译教本,讲解的很到位,新手基本上看上几天就可以上手了
    发表于 01-05 17:05 0次下载

    跟我一起学makefile

    关于makefile学习,深入了解嵌入式下makefile的编写
    发表于 05-23 18:21 0次下载

    驾驭makefile

    一本Makefile的经典教程,深入浅出,易学易懂
    发表于 06-17 16:16 9次下载

    linux makefile教程

     什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile
    发表于 11-12 09:11 4945次阅读

    Makefile是什么?Makefile工作原理是怎样的?Makefile经典教程免费下载

    Makefile的重要性 会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力 makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件
    发表于 09-12 17:19 0次下载
    <b class='flag-5'>Makefile</b>是什么?<b class='flag-5'>Makefile</b>工作原理是怎样的?<b class='flag-5'>Makefile</b>经典教程免费下载

    Makefile的项目模板免费下载

    本文档的主要内容详细介绍的是Makefile的项目模板免费下载 可根据项目名称修改。
    发表于 06-12 08:00 11次下载
    <b class='flag-5'>Makefile</b>的项目<b class='flag-5'>模板</b>免费下载

    Linux内核的Makefile、Kconfig和.config文件

    问题都和Makefile、Kconfig、.config有关,下面简单谈谈Makefile、Kconfig和.config。希望对你有启发。 三者的作用: 简单来说就是去饭店点菜:Kc
    的头像 发表于 11-12 17:31 2742次阅读

    嵌入式中的Makefile应用

    文章目录一.Makefile 引入二. Makefile语法1.通配符2.假象目标3.变量三.Makefile函数四.实例本文主要总结一下嵌入式开发中的Makefile,一般项目中都需
    发表于 11-03 17:06 11次下载
    嵌入式中的<b class='flag-5'>Makefile</b>应用

    一个STM32编译Makefile模板

    一个STM32编译Makefile模板
    发表于 11-13 20:06 10次下载
    一个STM32编译<b class='flag-5'>Makefile</b><b class='flag-5'>模板</b>

    MakefileMakefile与shell命令的联系

    博主最近在项目实践过程中,需要深度定制项目的Makefile,其中有些复杂的流程必须得借助shell脚本才能高效地完成,为此博主特意深入学习了在Makefile种调用shell命令的方法。
    的头像 发表于 07-11 09:06 2553次阅读
    【<b class='flag-5'>Makefile</b>】<b class='flag-5'>Makefile</b>与shell命令的联系

    Makefile】通用模板

    对于上述这样的多.c文件,又不在同一个目录下的大型工程中,借助makefile可以来减轻工作任务
    的头像 发表于 04-15 12:47 269次阅读
    【<b class='flag-5'>Makefile</b>】通用<b class='flag-5'>模板</b>

    三个Makefile模板分享

        本文分享三个Makefile模板:编译可执行程序、编译静态库、编译动态库。 1 写在前面     对于Windows下开发,很多IDE都集成了编译器,如Visual Studio,提供
    的头像 发表于 07-10 09:07 557次阅读
    三个<b class='flag-5'>Makefile</b><b class='flag-5'>模板</b>分享