vim,gcc/g++,makefile,cmake
一、vim:你的小帮手——文本编辑器
它是干嘛的?
想象你的代码就像是写在一本“程序的笔记本”里,vim就是一个超级厉害的“数字笔记本”或“文字编辑器”。
它有什么用?
- 编写代码:编辑、修改你的源代码
- 代码高亮:不同的语法用不同颜色帮你区分,方便阅读
- 快速操作:支持很多快捷键,写代码很快
- 自动缩进:让代码格式整齐
- 支持插件:可以装很多“扩展”功能,比如自动补全、调试等
简单理解:
vim就是一个“神奇的文字处理神器”,帮你快速写、改程序代码。
二、gcc/g++:你的“翻译官”——编译工具
它是干嘛的?
当你写完代码,就像写了一个“说明书”,但电脑看不懂。gcc(C语言)和g++(C++语言)就是把你写的“说明书”变成“机器可以直接执行的指令”的“翻译官”。
它们做什么?
- 预处理:处理宏定义和头文件
- 编译:检查语法,把代码变成低级的“汇编语言”
- 汇编:把汇编翻译成“机器代码”
- 链接:把所有需要的“零件”组合成一个“完整的机械”,即可执行程序
简单比喻:
你写一份菜谱(源码),gcc/g++就是那个“厨师”,帮你把菜谱变成一道可以“上桌吃”的美味佳肴(可执行文件)!
三、Makefile:你的“任务清单”——自动化编译脚本
它是干嘛的?
当你的项目变大,代码有很多文件,手动编译太麻烦。Makefile就像一个“助手”,帮你安排好“做菜的步骤”。
它怎么用?
- 定义目标:比如“做一个程序”
- 列出依赖:哪些文件必须先编译好
- 指定命令:怎么帮助你自动编译
举个例子:
如果你写了两个文件main.cpp
和utils.cpp
,想让它们一起组成一个程序,使用Makefile可以写一个“清单”告诉“助手”:
复制代码
# makefile示例
all: myprogrammyprogram: main.o utils.og++ -o myprogram main.o utils.omain.o: main.cppg++ -c main.cpputils.o: utils.cppg++ -c utils.cpp
只要在命令行输入make
,它就会自动帮你按照“清单”步骤,自动编译链接,省掉很多繁琐步骤。
总结:
- Makefile就是帮你“自动做繁琐事情的清单”
四、CMake:更智能的“工程管理工具”
它是干嘛的?
当项目变得复杂,隔壁同学用makefile写得非常麻烦,CMake就像一个“智能调度员”,帮你配置、生成对应平台的“构建文件”。
它和makefile有什么区别?
- 平台无关:你写一次CMakeLists.txt,可以在Windows、Linux、Mac都用
- 支持多种开发环境:可以生成Unix的Makefile,也能生成Visual Studio项目
- 更强大:可以自动检测依赖,管理大工程
举个比喻:
想像你要“搭建一座桥”,用makefile就是自己用砖头一块一块堆,得考虑平台、参数;用CMake就像请了一个“智能建筑设计师”,帮你自动设计出适合不同地方的“施工方案”。
实际使用:
你写个CMakeLists.txt
文件(工程配置文件),写一些规则,CMake帮你生成对应的Makefile或工程文件:
cmake_minimum_required(VERSION 3.10)
project(MyProject)add_executable(myapp main.cpp utils.cpp)
运行:
cmake .
make
即可自动完成。
五、它们之间的关系总结
工具 | 作用 | 你可以怎么用? | 作用的“粒度” |
---|---|---|---|
vim | 写代码的“笔记本” | 把程序写在里面 | 代码编辑 |
gcc/g++ | 把源代码“翻译”成可运行的程序 | 编译你的程序 | 编译、连线(最终生成可执行文件) |
Makefile | “自动化任务清单”,帮你自动编译多个文件 | 简化复杂工程的构建 | 自动化编译流程 |
CMake | “智能构建管理工具”,跨平台,支持多环境 | 配置大型跨平台项目 | 生成Makefile或工程文件 |
最后总结
- vim:写程序的工具,帮你把代码写得漂亮、快捷
- gcc/g++:把写好的代码“变成机器能跑的东西”
- Makefile:告诉“助手”怎样一步步“造”出你的程序,省时省力
- CMake:更智能、更强大的“工程设计师”,帮你在不同平台上都能顺利搭建