04.makefile(下)
◊基本框架:
a) Make常用内嵌函数
b) 多级目录Makefile的编写
4.1Make常用内嵌函数
函数调用的一般形式:$(function arguments(参数))
1) $(wildcard PATTERN) : 匹配当前目录下指定模式的文件
例子:src=$(wildcard *.c)
2) 模式替换函数
例子:$(src:.c=.o)
3) Shell函数: 执行shell命令
例子:$(shell ls –d */)
4.2多级目录Makefile的编写
4.2.1多级目录,只生成一个可执行文件的Makefile的编写
一个比较好的例子(值得参考):
.PHONY: all clean
CC = gcc
CFLAGS = -Wall –g
BIN = main
SUBDIRS = $(shell ls –d */)
SUBSRC = (shellfind(SUBDIRS) -name ‘*.c’)
SUBOBJ = $(SUBSRC: .c=.o)
ROOTSRC = $(wildcard *.c)
ROOTOBJ = $(ROOTSRC:.c=.o)
OBJS = (ROOTOBJ)(SUBOBJ)
all:$(BIN)
(BIN):(OBJS)
(CC)(CFLAGS) −o@
%.o:%.c
(CC)(CFLAGS) –c <−o@
clean:
rm –f (BIN)(OBJS)
4.2.2 多级目录,生成多个可执行文件的Makefile的编写:
$(CURDIR) :表示当前文件夹。
难度较大,先简单了解下。
4.3Makefile编写总结:
1)一个目录下,一个可执行文件的编写;
2)一个目录下,多个可执行文件的编写;
3)多级目录下,一个可执行文件的编写;
4)多级目录下,多个可执行文件的编写。
前三种Makefile文件的编写自己应该掌握。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· 程序员常用高效实用工具推荐,办公效率提升利器!
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)