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

    文章

    108

    浏览量

    20560
  • Makefile
    +关注

    关注

    1

    文章

    125

    浏览量

    19181
收藏 人收藏

    评论

    相关推荐

    linux系统中Makefile的使用方法

    的基础用法讲起,逐步深入到更高级的应用,为你呈现一个全面而详细的Makefile使用手册。 第一:Makefile的基本结构 一个最简单Makefile包含规则,规则由目标(targ
    的头像 发表于 05-11 08:49 650次阅读

    Makefile中文教程 -下载

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

    驾驭Makefile

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

    跟我一起学makefile

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

    linux makefile教程

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

    makefile的基本语法

     在Makefile中,最重要的三个概念是:目标(target)、依赖关系(dependency)和命令(command)。目标是指要干什么,即运行make后生成什么;依赖是指明目标所依赖的其他目标;命令则告诉make如何生成目标,这三个概念是通过Makefile中的规则
    发表于 11-12 10:15 1.1w次阅读

    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 3044次阅读

    芯片设计中的Makefile简单教程

    Makefile可以根据指定的依赖规则和文件是否有修改来执行命令。常用来编译软件源代码,只需要重新编译修改过的文件,使得编译速度大大加快。
    的头像 发表于 12-24 17:41 942次阅读

    嵌入式中的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 3456次阅读
    【<b class='flag-5'>Makefile</b>】<b class='flag-5'>Makefile</b>与shell命令的联系

    Makefile】通用模板

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

    三个Makefile模板分享

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