尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

makefile入门与一些简易windows命令

makefile入门与一些简易windows命令
📅 发布时间:2026/6/17 23:59:27

今日学习内容:Makefile 入门、变量、重定向与 PowerShell 简单快捷键

一、Makefile 是什么

Makefile 用来自动管理编译过程。

原来我需要手动输入:

g++ -c info.cpp -o info.o
g++ -c util.cpp -o util.o
g++ -c main.cpp -o main.o
g++ info.o util.o main.o -o test.exe

使用 Makefile 后,在我的 Windows + MinGW 环境里,需要执行:

mingw32-make

它会根据 Makefile 里的规则自动编译。

注意:有些教程里写的是:

make

但在 Windows 的 MinGW 环境下,经常不是 make,而是:

mingw32-make

这是工具名字不同,不是 Makefile 写法不同。


二、Makefile 的基本格式

Makefile 的基本格式是:

目标文件: 依赖文件执行命令

例如:

main.o: main.cppg++ -c main.cpp -o main.o

含义是:

main.o 由 main.cpp 生成

如果 main.cpp 被修改过,mingw32-make 会重新执行下面的编译命令。

注意:执行命令前面必须是 Tab,不能是普通空格。


三、Makefile 的时间戳判断

Makefile 会比较文件修改时间。

规则大概是:

如果目标文件不存在,就执行命令
如果依赖文件比目标文件新,就执行命令
否则不执行

比如:

main.o: main.cppg++ -c main.cpp -o main.o

如果 main.cpp 比 main.o 新,说明源码被改过,于是重新编译。

如果 main.o 已经比 main.cpp 新,说明不需要重复编译。


四、先生成 .o,再生成 .exe

C++ 工程里常见流程是:

.cpp -> .o -> .exe

例如:

g++ -c main.cpp -o main.o
g++ main.o -o test.exe

第一条命令:

g++ -c main.cpp -o main.o

意思是只编译,不链接,生成 main.o。

第二条命令:

g++ main.o -o test.exe

意思是把 .o 文件链接成最终的 .exe 程序。

多文件项目里这样做的好处是:哪个 .cpp 改了,就只重新编译哪个 .cpp,不用每次全部重新编译。


五、Makefile 变量

Makefile 里可以定义变量:

project := test.exe
link := info.o util.o main.o

使用变量时,用:

$(变量名)

例如:

$(project): $(link)g++ $(link) -o $(project)

等价于:

test.exe: info.o util.o main.og++ info.o util.o main.o -o test.exe

这里的 $ 可以理解为:取出变量里的内容。

比如:

$(project)

就是取出:

test.exe
$(link)

就是取出:

info.o util.o main.o

六、一个简单 Makefile

project := test.exe
link := info.o util.o main.o$(project): $(link)g++ $(link) -o $(project)info.o: info.cppg++ -c info.cpp -o info.outil.o: util.cppg++ -c util.cpp -o util.omain.o: main.cppg++ -c main.cpp -o main.oclean:del *.o

执行:

mingw32-make

会编译生成 test.exe。

执行:

mingw32-make clean

会执行:

del *.o

删除所有 .o 文件。

这里的:

*.o

表示所有以 .o 结尾的文件,比如:

main.o
info.o
util.o

七、Windows 里的重定向 >

> 是输出重定向。

它的作用是:把程序原本输出到终端的内容,写入文件。

例如:

.\test.exe > log.txt

意思是:

运行 test.exe
把输出写入 log.txt

如果 log.txt 已经存在,会覆盖原来的内容。

如果想追加内容,用:

.\test.exe >> log.txt

区别是:

>   覆盖写入
>>  追加写入

例如:

echo hello > a.txt
echo world >> a.txt

最后 a.txt 里面是:

hello
world

八、错误输出重定向

程序有两种常见输出:

stdout:正常输出
stderr:错误输出

把错误输出写入文件:

.\test.exe 2> error.txt

把正常输出和错误输出都写入同一个文件:

.\test.exe > log.txt 2>&1

简单理解:

> log.txt   把正常输出写入 log.txt
2>&1        把错误输出也合并进去

九、PowerShell 简单快捷键

上一条命令:

↑

下一条命令:

↓

自动补全:

Tab

比如输入:

cd Des

按 Tab,可能自动补全成:

cd .\Desktop\

按前缀搜索历史命令:

F8

比如输入:

g++

然后按 F8,它会找以前输入过的 g++ 开头的命令。

行首:

Home

行尾:

End

清屏:

cls

或者:

Ctrl + L

中断当前命令:

Ctrl + C

十、今日总结

今天主要学了:

1. Makefile 可以自动管理编译命令
2. Windows + MinGW 环境下,我需要用 mingw32-make,而不是 make
3. Makefile 会根据文件时间戳判断是否需要重新编译
4. C++ 工程常见流程是 .cpp -> .o -> .exe
5. Makefile 变量用 $(变量名) 取值
6. * 是通配符,比如 *.o 表示所有 .o 文件
7. > 可以把程序输出写入文件
8. >> 可以追加输出
9. PowerShell 里 Tab、F8、Home、End 都比较常用

目前入门阶段,先掌握最朴素的写法即可,不急着学更复杂的模式规则。

相关新闻

  • 北京瓷器玉石工艺品回收怎么选不踩坑?2026TOP5正规机构精准适配指南 - 深鉴新闻
  • Visium HD空间组学技术:从高分辨率捕获到单细胞空间图谱构建
  • 头歌大模型实验:从神经网络基础到智能体开发的完整实践指南

最新新闻

  • 2026性价比最高的GEO监测工具,选它就对了
  • 089、 PCIE ASPM策略与退出延迟:从一次深夜调试说起
  • 终极IT运维实战指南:LinkedIn技能评估完整题库解析
  • Microsoft Intune脚本开发指南:自定义脚本模板与最佳实践
  • 彻底解决!ExplorerPatcher优化Windows 10开始菜单响应速度的6大方案
  • 哪种眼油去黑眼圈效果好?亮眼去黑双在线,5款宝藏眼油分享 - 全网最美

日新闻

  • 2026年不锈钢卷板厂家推荐排行榜:冷轧热轧/304/201不锈钢卷板,高颜值耐腐蚀源头厂家实力精选 - 企业推荐官【官方】
  • FLUX.1-dev FP8模型实战指南:24GB以下显卡高效部署方案
  • 2026佛山长途搬家价目表:跨省跨市搬家费用完整计算指南 - 从来都是英雄出少年

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号