一个通用的Makefile模板-转

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

使用前需要在当前目录下建立一个obj文件夹,用来存放中间文件。*.d文件中包含了对应*.c的依赖文件,*.o文件为对应*.c文件的目标文件。

详细的Makfile资料可以看看GNU make中文手册跟我一起写Makefile


Makefile通用 模板CC=gcc
CFLAGS=-Wall

OBJPATH=obj                # .d文件和.o文件保存 路径
TARGET=demo                # 最终可 执行文件

default: $(TARGET)

SOURCE=a.c b.c                # 需要编译的.c文件
INCLUDE=

获取.d文件名集合
DEPS=$(addprefix $(OBJPATH)/, $(patsubst %.c, %.d, $(filter %.c, $(SOURCE))))
# 获取.o文件名集合
OB JS=$(addprefix $(OBJPATH)/, $(addsuffix .o, $(basename $(SOURCE))))

-include $(DEPS)

# 生成.d文件
$(OBJPATH)/%.d: %.c
    $(CC) $(INCLUDE) -MM $< | sed "1s|^|$(dir $@)|" |"
    sed "1{x;s|.*|$@: $<|;G;}" > $(basename $@).d

# 生成.o文件
$(OBJPATH)/%.o : %.c
    $(CC) $(CFLAGS) -o $@ -c $<

链接成可执行文件
$(TARGET): $(OBJS)
    $(CC) $(CFLAGS) -o $@ $^

# 清理
clean:

    rm -rf $(OBJPATH)/*.d $(OBJPATH)/*.o $(TARGET) 


Makefile通用模板:可执行程序、静态库与动态库构建 Makefile是Linux及嵌入式系统中实现自动化编译构建的基础工具,其核心在于依赖管理、规则定义与跨平台适配能力。通过理解目标文件(.o)、归档(.a)和共享对象(.so)的生成原理,开发者可构建出高复用、易维护的工程化模板。该技术具备显著的工程价值:提升增量编译效率、支撑交叉编译、简化CI/CD集成,并为向CMake等现代构建系统演进提供平滑路径。典型应用场景涵盖ARM/Linux混合架构固件开发、资源受限MCU静态链接、以及支持热更新的动态插件系统。本文围绕可执行程序、静态库、动态库三大构建范式,详 阅读详情

相关推荐

通用Makefile的编写和在项目工程中使用Makefile(包括动态库、静态库的链接、整个工程联合编译)

一、通用Makefile文件的编写        (1)、什么是通用Makefile?                     这里的通用Makefile指的是它既能编译可执行文件、也能编译动态链接库、又能编译静态库,只需要更改很少的内容即可。        (2)、写一个通用Makefile #-------------------------配置区域------

迷雾江湖 的博客 8391

C/C++ Makefile学习通用模板

Makefile或者makefile编译程序通用模板

zhoubiaodi的博客 1654

linux开发Makefile模板

使用Makefile模板,用户只需要根据需要配置头文件路径,库文件路径,编译器、目标文件名即可一键make,生成对应编译器平台的可执行程序

Makefile通用模板】入门必看篇,超详细

变量值可以随意定义。gcc分为很多种,常见的有:gcc、arm-linux-gcc、arm-none-eabi-gcc等等,所以为了Makefile适配更多的C/C++项目,可以将编译器定义一个变量,这后续更改起来很方便。CC = gcc。

m0_47329175的博客 2520

Makefile教程(附通用模板

Makefile教程(附通用模板

qq_36973838的博客 1506

Makefile通用模板

功能包含基本功能编译exe(包括调用其他算法库)的功能。CC := gccAR := ar$(TARGET):clean:print:本文主要介绍了一般Makefile模板,供参考。

专注音频,高效工作,快乐生活! 551

通用 Makefile 模板

这篇Makefile模板提供了一个通用的C/C++项目构建系统,主要特点包括:1) 支持多目录结构,自动查找源文件;2) 可配置编译器选项、链接库和路径;3) 自动生成依赖关系(-MMD选项);4) 分离中间文件到build目录。用户只需修改PROJECT_NAME、SRC_DIRS等变量即可使用。模板支持all/clean/rebuild等标准目标,采用VPATH查找源文件,通过wildcard/patsubst等函数处理路径换,使用-MMD自动跟踪头文件依赖。

zxz_Fine的博客 1201

makefile通用模板

makefile通用模板 结合自己编译redis测试代码,总结出一个makefile模板,以下makefile是以redis的测试代码为例进行验证的(请见我另一篇博文Linux下C++访问Redis) #wildcard把 指定目录 ./ 和 ../lib 下的所有后缀是cpp的文件全部展开。 SRCS = $(wildcard *.cpp) #OBJS将$(SRCS)下的.cpp文件化为.o...

bajianxiaofendui的博客 6941

一个通用Makefile模板

最近学习Makefile,写了一个C++编译的通用Makefile模板 它能做什么: 1. 能编译出应用程序,静态库,动态库 2. 可以用在任意目录结构的工程 3. 可以指定多个源文件后缀 4. 可以指定源文件的排除目录和排除文件列表 5. 已经充分考虑了源文件与头文件的依赖关系 6. 使用简单,只需要修改USER-DEFINED SECTION中的几个参数 执行流程:

2041

一个适合小型项目的通用Makefile模板

使用规则: 目录结构图如下所示。 phone:为项目名 Make后最后的可执行文件也为phone src : 该目录下存放所有的.c文件 inc : 该目录下存放所有的.h文件#Copyright (c) 2017 xiethon@126.com # # *DOCUMENTATION* # 一个通用Makefile模板 # $(notdir $(CURDIR)) 获取目录名 TARGET

xiethon的专栏 2399

Linux的通用makefile模板

Makefile 模板 # 下面的变量可以在shell 的环境变量里面指定。# 也可以象下面这样在 Makefile 里面指定。# CC=gcc                                          # 编译器# CFLAGS=-Wall -Werror -g           # 编译器参数# LD=gcc          

wubin1124的专栏 4257

一个适用各类场合的Makefile模板

1.写在前面   对于Windows下开发,很多IDE都集成了编译器,如Visual Studio,提供了“一键编译”,编码完成后只需一个操作即可完成编译、链接、生成目标文件。Linux开发与Windows不同,Linux下一般用的的gcc/g++编译器,如果是开发ARM下的Linux程序,还需用到arm-linux-gcc/arm-linux-g++交叉编译器。Linux下也可以实现“一键编译...

只要思想不滑坡,想法总比问题多。 5037

Makefile通用模板解析

介于许多童鞋不会使用Makefile来管理我们的代码文件,有时候工程文件少的时候通过gcc直接编译是比较方便的,但是当我们一个项目中的工程文件比较多难以管理的时候再去使用gcc去逐个地编译源文件那是比较麻烦的,可能刚开始写Makefile的时候花费一些时间但是一旦我们的Makefile写好之后,以后每次修改好代码之后一条make即可完成所有的编译工作。         对于简单实用Makefil

LieBao 6370

通用Makefile模板

Makefile模块

Erice_s的博客 803

几个Makefile通用模板分享!

原文:https://blog.csdn.net/qq_20553613/article/details/90649734大家好,我是ZhengN。本次给大家带来三个Makefile模板:...

嵌入式大杂烩 8452

Makefile通用模板 + 倒计时小程序(13)

在Linux下实现Makefile通用模板

2402_83272216的博客 1670

Makefile语法及通用模板

简介:本文主要讲解了在开发常规项目时,用于自动化部署生成目标文件的Makefile。对其包含的主要语法进行了讲解,最后给出了一个项目通用Makefile模板,以帮助大家理解。 1. Makefile 三要素 目标 依赖 命令 目标:依赖(文件、其它目标) <tab>命令1 <tab>命令2 <tab>命令3 target1:target2 target3 echo "target1" target2: echo "target2" target3.

Leon的博客 2315

一个实现vcs自动化仿真的makefile模板

文章目录一个实现vcs自动化仿真的makefile模板makefile简单介绍makefile & vcs文件结构makefile文件内容 一个实现vcs自动化仿真的makefile模板 vcs的安装可以参考我另外一篇文章【点这儿】 makefile简单介绍 个人理解就是一种类似脚本的东西。 写一个名字叫Makefile的文件,里面放很多块儿shell命令,为每一块命令分配一个自定义名称(就像打包一样),再把包之间像树状图一样连起来。 这样以来,在终端输入一个简单的自定义名称,Makefile就能帮

Ocean_Yv的博客 5285
上一篇: gdb 调试 入手 实例讲解-转
下一篇: 简单而又完整的Makefile-转
xp5xp6
博客等级 码龄11年 99粉丝 103原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值