单文件夹下多个cpp文件的MAKEFILE

本文分享如何使用Makefile管理C++项目,通过wildcard和patsubst函数简化编译过程,并实现clean和run任务。适合初学者理解Makefile的基础应用。

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

最近要写makefile,这里记录一下备忘以后方便拿来用。

当我的文件夹中有这么些个文件:
在这里插入图片描述
最开始我是手动写成这种的

CXXFLAGS := -W -Wall -O3 -std=c++17 -fconcepts

assignment3: assignment3.o linalg.o matrix.o
	$(CXX) $(CXXFLAGS) $^ -o $@
assignment3.o: assignment3.cc
	$(CXX) $(CXXFLAGS) -c $< -o $@
linalg.o: linalg.cc
	$(CXX) $(CXXFLAGS) -c $< -o $@
matrix.o: matrix.cc
	$(CXX) $(CXXFLAGS) -c $< -o $@

.PHONY: clean
clean:
	rm *.o assignment3

用起来倒是一点问题都没有,不过一个个挨着打文件名也太傻了吧,于是就去到处查资料学习最后整出个这样的来,这里用到了两个函数。

.PHONY: clean run

#我的编译选项,你可以用你自己的
CXXFLAGS = -W -Wall -O3 -std=c++17 -fconcepts
#指定删除规则
RM = -rm -rf

#注意这里我的文件后缀全是.cc,你可以改成.cpp,当然要记得把所有的都改了
srcpp = $(wildcard ./*.cc)
object = $(patsubst %.cc, %.o, $(srcpp))

#可执行文件的名称,这里你爱用什么用什么
BIN_NAME = assignment3

$(BIN_NAME): $(object)
	$(CXX) $(CXXFLAGS) -o $@ $(object)
%.o: %.cc
	$(CXX) $(CXXFLAGS) -c $< -o $@

run: 
	./$(BIN_NAME)

clean:
	$(RM) *.o $(BIN_NAME)

在这里插入图片描述
make一下看看,没啥问题
在这里插入图片描述
make run执行那个可执行文件
在这里插入图片描述
make clean清除
在这里插入图片描述
(命令行编程果然还是比IDE用起来要有操作感得多

我也是初学者,如果有什么问题与建议敬请指出。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值