
用 Makefile 自动编译 C++ 项目,核心是告诉 make 哪些文件变了需要重编、怎么调用 g++ 编译和链接。一个最简可用的 Makefile 只需三部分:目标(target)、依赖(pr
erequisites)、命令(recipe),且命令行必须以 Tab 开头。
假设你只有一个源文件 main.cpp,想生成可执行文件 app:
app: main.cpp
g++ -o app main.cpp
保存为 Makefile(注意大小写和无后缀),在终端运行 make 即可生成 app。再次运行 make 时,如果 main.cpp 没变,make 会提示 “up to date”,不会重复编译。
当项目有 main.cpp、utils.cpp、utils.h 时,应先分别编译为对象文件(.o),再统一链接,避免全量重编:
main.o: main.cpp utils.h —— 表示 main.o 依赖这两个文件,任一修改就重新编译 main.cpputils.o: utils.cpp utils.h —— 同理app: main.o utils.o —— 最终链接,只在 .o 文件变化时才执行 g++ -o app ...app: main.o utils.o
g++ -o app main.o utils.o
main.o: main.cpp utils.h
g++ -c main.cpp
utils.o: utils.cpp utils.h
g++ -c utils.cpp
实际开发中建议启用警告和标准版本,例如:
AI发型设计
虚拟发型试穿工具和发型模拟器
247
查看详情
CXX = g++ —— 定义编译器变量,方便后续替换CXXFLAGS = -Wall -std=c++17 -g —— 统一控制编译参数clean: —— 自定义伪目标,用于删除中间文件CXX = g++
CXXFLAGS = -Wall -std=c++17 -g
app: main.o utils.o
$(CXX) $(CXXFLAGS) -o app main.o utils.o
main.o: main.cpp utils.h
$(CXX) $(CXXFLAGS) -c main.cpp
utils.o: utils.cpp utils.h
$(CXX) $(CXXFLAGS) -c utils.cpp
clean:
rm -f *.o app
执行 make clean 就能清掉所有 .o 和可执行文件。
GNU make 能自动推导 .cpp → .o 的规则,所以你可以省略显式的 .o 规则,只写最终目标和清理项:
CXX = g++
CXXFLAGS = -Wall -std=c++17 -g
SRCS = main.cpp utils.cpp
OBJS = $(SRCS:.cpp=.o)
TARGET = app
$(TARGET): $(OBJS)
$(CXX) $(CXXFLAGS) -o $@ $^
clean:
rm -f $(OBJS) $(TARGET)
其中 $@ 表示当前目标名,$^ 表示全部依赖文件,$(SRCS:.cpp=.o) 是后缀替换函数。这样增删源文件只需改 SRCS 一行。
以上就是如何为c++++项目编写一个简单的Makefile g++编译自动化【入门教程】的详细内容,更多请关注其它相关文章!
# app
# 可执行文件
# 命令行
# 尼克
# 高性能
# 并在
# 译为
# 何为
# 器中
# c++
# ai
# js
# 只需
# 芝罘seo优化推广方式
# 英山seo推广方案
# 进企业进行营销推广
# 客户网站建设洽谈方案
# seo首页三大标签
# 网站建设的简答题
# 郑州哪里学seo好
# 武夷山网络seo哪个好
# seo优化区域
# 图片网站 推广
# 编译成
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
J*aScript文本高亮功能优化:解决多词匹配错误与精确分割策略
Python定时发送QQ消息
J*aScript与HTML元素交互:图片点击事件与链接处理教程
小红书如何引流到私信?引流到私信有用吗?
126手机126邮箱登录_126邮箱手机登录入口官网
Sublime怎么配置YAML文件格式化_Sublime YAML Formatter插件教程
《崩坏:星穹铁道》3.6版本异相仲裁打法及配队推荐
顺丰速运官网查询入口 顺丰物流查询官网入口链接
易车网官网直达入口 易车网在线登录入口
《大周列国志》皇帝律令功能介绍
《雷电模拟器》截图方法介绍
抖音如何进行蓝V认证 抖音企业号申请所需资料与流程
OTT月报 | 2025年9月智能电视大数据报告
海棠书屋官方在线书籍入口 海棠书屋文学作品浏览官网链接
微信客户端如何找回密码_微信客户端忘记密码找回方法
Google Drive API 认证:服务账户与OAuth 2.0的选择与实践
谷歌学术论文搜索引擎 谷歌学术官网入口论坛永久链接
Python模块化编程:避免循环导入与共享函数的最佳实践
使用TinyButStrong生成HTML并结合Dompdf创建PDF教程
Microsoft Edge网页字体太淡看不清怎么办_Microsoft Edge字体渲染优化技巧
鼠标没反应了怎么办 无线/有线鼠标失灵的解决方法【详解】
《伊瑟》凶影追缉库卢鲁boss攻略
Python实战:高效处理实时数据流中的最小/最大值
Eclipse开发J*a快速入门
小红书网页版首页入口 小红书网页版电脑端官方登录链接
iPhone12是否要更新ios16
电子白板帮助菜单使用指南
《爱南宁》认证电动车方法
如何用mysql实现客户反馈管理_mysql客户反馈数据库方法
b站怎么用微信登录_b站微信登录方法
excel怎么制作考勤表 excel考勤模板与函数公式讲解
不吃碳水化合物是健康减肥的好办法吗
电脑从睡眠中被自动唤醒怎么办_Windows唤醒源事件查看与禁用【解决】
在Django单元测试中优雅处理信号:基于环境的条件执行策略
解决Flex容器横向滚动内容截断与偏移问题
Win10如何关闭开机锁屏界面_Windows10跳过锁屏直接登录设置
192.168.1.1路由器后台入口 192.168.1.1默认登录入口
抖音号升级企业号怎么改名字?升级企业号有哪些好处?
J*aScript深度克隆:实现高效、健壮与安全的复杂对象复制
Python中安全地将环境变量转换为整数的类型注解指南
PHP utf8_encode 字符编码转换疑难解析与最佳实践
VS Code中的Tailwind CSS IntelliSense插件使用技巧
2025SNH48年度青春盛典门票价格及购买方式
快手缓存清理方法
研招网官方网站招生平台入口_中国研究生招生信息网官网登录
《书耽》更换手机号方法
PyEZ 配置提交中 RpcTimeoutError 的健壮性处理策略
抖音团长模式怎么做?团长模式是什么意思?
《深林》冬季章节图文攻略
在VS Code中利用AI辅助进行代码迁移
2025-12-19
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。