Linux高性能服务器开发:Makefile基础用法

本文介绍Makefile的基础概念与实际应用技巧,涵盖规则定义、变量使用、模式匹配及清理操作等核心内容,并提供一个基本的Makefile模板示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文属于牛客网上的一个项目笔记:Linux高性能服务器开发课

规则:

目标:依赖

    命令

目标:需要生成的文件

依赖:生成目标所需要的文件

命令:如何使用依赖生成目标(需要tab缩进

1、写在后面的规则是为前面的规则服务的,比如第一个规则中的某个依赖不存在,就会检查后面的规则,看看是否会生成它。其他规则都是为第一条规则服务的。

2、会通过比较时间来确定某文件是否需要重新make。

示例:

#生成app需要后面的依赖
app:sub.c add.c mult.c div.c main.c
    #这条规则的命令
    gcc sub.c add.c mult.c div.c main.c -o app

变量

var = xxx   定义了一个变量var,值是xxx
CC  C编译器
GXX  CPP编译器
$@  获取目标文件名称
$<  获取第一个依赖名称
$^  所有的依赖文件
$(var)  获取var的值

模式匹配

通配符: %   匹配若干字符

函数

$(wildcard PATTERN …)

功能:获取指定目录下指定类型的文件列表

参数:PATTERN指的是某个或多个目录下的对应的某种类型的文件,如果有多个目录,一般是用空格间隔。

返回:得到的若干个文件的文件列表,文件名之间使用空格间隔。

$(patsubst <pattern>,<replacement>,<text>)

功能:查找<text>中的单词(单词以‘空格’,‘回车’,‘tab’,‘换行’分隔)是否符合模式<pattern>,如果匹配的花,则以<replacement替换。,

参数:<pattern>可以包括通配符‘%’,表示任意长度的字串。如果<replacement>中也包含‘%’,那么,<replacement>中的%所代表的将是<parttern>中所表的。(可以用 \ 来转义)

返回:返回被替换后的字符串。

示例:

$(patsubst %.c, %.o, x.c bar.c)

返回:x.o bar.o

清理

删除中间生成的文件。

clean:
    rm $(xx.o) -f

makefile基本模板

src=$(wildcard ./*c)
objs=$(patsubst %.c, %.o, $(src))
target=app

$(target):$(objs)
    $(CC) $(objs) -o $(target)

#上面缺少文件时,会来下面的规则中找。
#上面缺少sub.o 就会来下面找,%匹配的sub

%.o:%.CC
    $(CC) -c $< -o $@

clean:
    rm $(objs) -f

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值