news 2026/6/10 6:06:46

cmake 是编译器吗

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
cmake 是编译器吗

不是的,CMake 不是编译器,这是很多初学者容易搞混的地方。我们仔细分清楚:


一、CMake 是什么?

CMake 是“生成编译流程的工具”
它的工作是:告诉编译器和构建工具(make / ninja)应该怎么编译你的代码

换句话说:

  • CMake = 编译说明书生成器
  • 实际编译工作 = 编译器(g++, gcc, clang)干的

二、CMake 与编译器的关系

CMakeLists.txt (规则说明书) ↓ CMake ↓ Makefile / Ninja ↓ 编译器 g++ / gcc ↓ 可执行文件 / 库
  • CMake:生成 Makefile 或 Ninja 文件(告诉 g++ 该编译哪些文件,哪些依赖)
  • g++ / gcc:真正把.cpp变成.o,再链接成可执行文件
  • Make / Ninja:根据 Makefile 或 Ninja 文件,按顺序调用编译器完成整个构建

三、举例类比(Java / Python)

语言工具干什么
C++CMake生成编译流程
g++真正编译代码
JavaMaven生成编译/打包流程
javac真正编译代码
Pythonsetup.py生成打包流程
Python 解释器执行代码 / 打包

💡 核心:CMake 只负责“计划”,不干活


四、用生活类比

  • CMake = 厨师的菜谱
  • 编译器 g++ = 厨师本人
  • 最终可执行文件 = 做好的菜

你手上有菜谱(CMake),但不动手(g++ 编译),菜是做不出来的。


如果你愿意,我可以画一张0基础版“CMake 编译器流程图”
让你一眼就能看懂 CMake、g++、Make 之间的关系。

你想让我画吗?

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/6 6:46:29

【专题13】云运维面试题

说明:这里以腾讯云为例,整理高频云运维面试题1、云联网与对等连接有什么区别VPC 对等连接是一种用于办公数据同步的同地域跨 VPC 网络互联服务,可以使两个 VPC 间的路由互通,就像它们属于同一网络一样。通过在两端配置路由策略&am…

作者头像 李华
网站建设 2026/5/29 23:13:06

Jupyter Notebook %load加载外部PyTorch代码

Jupyter Notebook 中高效加载外部 PyTorch 代码的实践路径 在深度学习项目中,我们常常面临这样的场景:模型结构写在 .py 文件里,训练逻辑却想在 Jupyter Notebook 中交互式调试。复制粘贴太麻烦,直接 import 又看不到源码、难以修…

作者头像 李华
网站建设 2026/6/4 20:18:22

SSH ClientAliveInterval服务器端保活机制

SSH ClientAliveInterval服务器端保活机制 在远程开发日益普及的今天,尤其是在深度学习、AI模型训练等长周期任务场景中,一个看似微不足道的网络空闲断连问题,可能直接导致数小时的训练成果付诸东流。你是否曾经历过这样的情况:深…

作者头像 李华
网站建设 2026/6/9 20:11:56

【C++】CMake与Makefile:核心区别与实战指南

文章目录cmake与makefile的区别CMake 常用命令详解基础配置命令1. 指定CMake最低版本2. 设置项目名称变量操作命令1. 普通变量定义与赋值2. 列表操作(添加元素)3. 预定义核心变量4. 字符串替换编译构建命令1. 添加头文件搜索路径2. 查找目录下的所有源码…

作者头像 李华
网站建设 2026/5/31 0:05:19

SSH GatewayPorts允许外部访问PyTorch转发端口

SSH GatewayPorts 允许外部访问 PyTorch 转发端口 在远程深度学习开发中,一个常见的场景是:你正在本地笔记本上调试 Jupyter Notebook 中的模型代码,而实际训练任务运行在远端配备多张 GPU 的服务器上。为了实时查看训练日志、可视化结果或与…

作者头像 李华