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

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

使用规则:
目录结构图如下所示。
项目目录结构图

phone:为项目名 Make后最后的可执行文件也为phone
src : 该目录下存放所有的.c文件
inc : 该目录下存放所有的.h文件

#Copyright (c) 2017 xiethon@126.com
#
# *DOCUMENTATION*
# 一个通用的Makefile模板


# $(notdir $(CURDIR)) 获取目录名
TARGET = $(notdir $(CURDIR)) 

CROSS_COMPILE = gcc
COMPILE.c = $(CROSS_COMPILE)  -c
LINK.c = $(CROSS_COMPILE)
RM =rm

# $(wildcard src/*.c) :获取src/ 目录下的所有.c文件。
# $(wildcard inc/*.h) :获取inc/ 目录下的所有.h文件。
SOURCES = $(wildcard src/*.c)
HEADERS = $(wildcard inc/*.h)

# 静态模式规则。变量OBJFILES集合下的所有.c 替换成 .o文件
OBJFILES = $(SOURCES:%.c=%.o)

.PHONY:clean all install

#all:终极目标
all:$(TARGET) 
    @echo builded target:$^
    @echo 

#目标文件依赖规则
$(TARGET): $(OBJFILES) 
    @echo 
    @echo Linking $@ from $^...
    $(LINK.c) -o $@ $^ 
    @echo Link finished

#OBJFILES的依赖规则
$(OBJFILES): %.o:%.c
    @echo
    @echo Compiling $@ from $<...
    $(COMPILE.c) -o $@ $<
    @echo Compile finished

clean:
    @echo Removing generated files...
    @ -$(RM) -rf $(OBJFILES) $(TARGET) *~ *.d *.o 

执行效果如下:

linux@ubuntu:/mnt/hgfs/01_Proj/svn/phone$ make
Compiling src/contact.o from src/contact.c…
gcc -c -o src/contact.o src/contact.c
Compile finished

Compiling src/list.o from src/list.c…
gcc -c -o src/list.o src/list.c
Compile finished

Compiling src/main.o from src/main.c…
gcc -c -o src/main.o src/main.c
Compile finished

Linking phone from src/contact.o src/list.o src/main.o…
gcc -o phone src/contact.o src/list.o src/main.o
Link finished
builded target:phone

Makefile源文件和测试项目地址:https://github.com/xiethon/Makefile

Makefile通用模板】入门必看篇,超详细 变量值可以随意定义。gcc分为很多种,常见的有:gcc、arm-linux-gcc、arm-none-eabi-gcc等等,所以为了Makefile适配更多的C/C++项目,可以将编译器定义一个变量,这后续更改起来很方便。CC = gcc。 阅读详情

相关推荐

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

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

zhoubiaodi的博客 1654

makefilemakefile 通用模板

makefilemakefile 通用模板

challenglistic的博客 554

通用 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教程(附通用模板

qq_36973838的博客 1506

LunaTranslator 视觉小说实时翻译快速上手:5分钟跑通第一句日文译文

LunaTranslator 是一款**视觉小说实时翻译**工具:它挂在你的日文 Galgame 旁边,画面一出现台词,译文就同步跟出。它面向找不到汉化、又不想干等汉化组的玩家——不用切窗口、不用复制粘贴,靠 **HOOK** 提取方式几乎零延迟。照下面步骤操作,5 分钟就能看到你人生第一句译文。 ## 🧭 先选提取方式:HOOK、OCR 还是剪贴板 新手最常问的一句话是"为什么我 HOOK

gitblog_00994的博客 185

Makefile-Templates 项目完全指南:一套模板搞定小、中、大型 C/C++ 工程构建

如果你是 C/C++ 新手,很可能被手写 Makefile 的语法劝退过:变量、隐式规则、依赖关系、清理目标……每一项都容易踩坑。而 **Makefile-Templates 项目** 正是为了解决这一痛点而生的——它针对不同规模与复杂度的 C/C++ 工程构建场景,提供了三套开箱即用的 **Makefile 模板**,从只有一个源文件夹的小项目,到拥有多层嵌套目录的中型项目,再到需要自动化构建工

gitblog_01008的博客 608

Makefile 模板使用指南

Makefile 模板使用指南 项目介绍 欢迎使用 Makefile_template 开源项目,本项目由 latelee 提供,旨在提供一系列适用于不同规模项目Makefile 模板。从简单的、具有平坦源文件结构的小型项目到拥有复杂结构的大项目,每个模板都针对特定场景设计。虽然这些示例可能不是最简洁或最通用的解决方案,但它们能够帮助开发者快速上手构建项目的构建流程。请注意,随着项目的发展,...

gitblog_00266的博客 374

Makefile 模板

之前在各个不同的项目中,写过各种各样的Makefile,一直苦于没有一个相对理想的Makefile模板。 1)Android中的Android.mk文件功能不错,但是整个Android的编译系统相对比较复杂,涉及的内容也很多,对于小的项目来说有点杀鸡用牛刀的感觉。 2)Linux Kernel的kbuild系统,也不错,但是还是有点太过于复杂,而且看起来不太适合用编译多个不同的elf还有多个静态库啥的。当然也有可能是自己不熟悉,同时好像没有进度的显示,也没有pre-compile的支持。 最近抽空专

fanhongxuan2014的博客 340

Makefile 模板终极对比:Makefile-Templates 三种方案与 CMake 的选型决策指南

选择一套合适的 Makefile 模板,往往比写一个能用的 Makefile 更重要。Makefile-Templates 是一个面向不同规模工程的开源 Makefile 模板合集,它按照工程的复杂度提供三种差异化方案:适合小型工程的极简模板适合中型工程的多目录分布式模板,以及面向大型工程的自动化构建建议(推荐 CMake)。本文将以新手视角,逐一拆解这三种 Makefile 模板的适用场景与核

gitblog_00865的博客 399

一个使用多年的Makefile模板

许久以前,一直使用自己总结的Makefile模板,这个模板也是基于现有资料整理而成的。 内容 Makefile完全内容如下: # !!!=== cross compile... CROSS_COMPILE ?= CC = $(CROSS_COMPILE)gcc CXX = $(CROSS_COMPILE)g++ AR = $(CROSS_COMPILE)ar ARFLA...

李迟的专栏 1636

新手必读:Makefile-Templates 小型工程模板逐行拆解,看懂 5 个核心变量就够了

第一次接触 Makefile 时,很多人都会被一大堆变量、规则、自动推导符号劝退。其实,Makefile 并没有想象中那么难。Makefile-Templates 就是这样一个开源项目:它针对不同规模的工程,提供了从简单到复杂的成套 Makefile 模板,其中**小型工程模板**(SmallProject)非常适合刚入门的新手。本文不堆砌长篇代码,而是把这个模板逐行拆解,带你弄懂最关键的 5 个

gitblog_00569的博客 193

Makefile模板

新增/删除C语言源文件,不用修改Makefilewildcard是Makefile内置函数,作用是遍历当前目录,匹配全部后缀为.c的源码文件,全部存入变量SRC中。Makefile字符串替换语法:把SRC里所有文件的后缀.c统一替换成.o,也就是编译产生的中间目标文件。自定义变量,指定最后打包生成的可执行程序名称,可随意修改。通用性极强:单目录多文件C项目直接套用,修改BIN变量就能适配不同项目;自动化管理:增减.c源码无需改动脚本;增量编译:只编译被修改过的文件,节省编译时间;极简易维护。

Diopeng_out的博客 234

简化C和C++项目构建:一个强大的Makefile模板

简化C和C++项目构建:一个强大的Makefile模板 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在开发C和C++项目时,构建系统是不可或缺的一部分。然而,手动编写和管理Makefile往往繁琐且容易出错。为了解决这一问题,我们推出了一款简单而强大的Makefile模板,专为C和C++项目设计。这个Makefile模板不仅简化了构建过程,还提供了灵活的配置选项,适...

gitblog_09705的博客 427

30秒生成你的第一个Makefile原型

比如最近做课程作业时,我就用同样方法为不同实验模块生成Makefile,省下的时间可以用来专注算法实现。更棒的是,平台还支持直接在线调试,不用配置本地环境就能验证Makefile是否工作正常。整个过程最让我惊喜的是,平台生成的Makefile已经考虑了.h文件的隐式依赖——这个新手最容易忽略的问题。传统方式可能要花半小时调试的Makefile,现在输入需求后直接获得可用版本,效率提升太明显了。可以快速生成Makefile原型,整个过程不到30秒,分享下这个高效的工作流。- 验证构建流程的可行性原型。

SnowflakeJaguar14的博客 810

小型软件工程Makefile基础模板

几个简单适合小程序的Makefile,可直接拷贝使用,自己mark一下,这样长时间不用Makefile也不用去看手册了 0.只有一个文件 # 变量的定义,方便使用 CC      = gcc CCFLAGS = -O2 -s BIN     = test OBJ     = root_password_tool_win32.o $(BIN) : $(OBJ)     $

ycc541的专栏 501

探索高效启动C语言项目的终极解决方案 —— C项目模板

探索高效启动C语言项目的终极解决方案 —— C项目模板 在C语言的世界里,每个项目往往从繁琐的命令行解析、Makefile编写、帮助和使用信息构建开始。这一系列前期工作,对许多开发者而言,无疑是一次次重复的劳动。然而,C项目模板正是为了解决这些问题而生,它力图将你的起点直接定位到解决问题的核心代码上。 项目介绍 C项目模板一个旨在简化C语言项目初始化过程的开源工具。它像一位得力助手,为你自动搭...

gitblog_00002的博客 967

第 36 天:Makefile 与 CMake 在嵌入式项目中的使用技巧

构建系统在嵌入式开发中扮演着至关重要的角色。无论是传统的 Makefile,还是近年来广泛使用的 CMake,如何组织好源码结构、管理编译依赖、实现多平台适配、控制构建输出,是影响开发效率和系统稳定性的关键因素。本文将以嵌入式实际项目为基础,剖析 Makefile 与 CMake 的使用技巧与差异,展示其在 STM32、ESP32、裸平台与 RTOS 项目中的工程落地路径,并给出模块化构建、编译优化与调试协同的实战建议。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1237

告别手动编译:用 Makefile 优雅管理 C/C++ 项目的库

Makefile是 C/C++ 项目管理中的强大工具。通过定义清晰的规则和变量,它能够将复杂的编译过程自动化,让你专注于代码本身。无论是简单的源文件编译,还是更高级的静态库或动态库管理,掌握Makefile的编写都将显著提升你的开发效率和项目的专业性。开始尝试编写你自己的Makefile吧,它将彻底改变你编译和管理 C/C++ 项目的方式!

蜗牛沐雨 842

用 Docker 容器开发 C++ 项目Makefile-Templates 的 builder 工作流实战教程

在这个"环境比代码更难配"的时代,用 Docker 容器开发 C++ 项目已经成为许多团队的标准姿势。本文将带你上手 Makefile-Templates 项目中自带的一套 builder 工作流,用两条 make 命令就能完成"构建开发镜像 + 进入容器开发 + 编译运行 C++ 代码"的完整闭环。无论是新手还是老手,都能快速把这套 Docker 容器 C++ 开发方案搬进自己的工程。 ##

gitblog_00793的博客 427
上一篇: uCOS-II时钟相关函数介绍
下一篇: Linux网络TCP相关的API
xiethon
博客等级 码龄12年 2粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值