当前位置: 首页 > news >正文

【CMake入门学习教程】bash语句示例注解

我的CMake专栏

鉴于很多同学跟我私信bash语句的意思,所以先做出以下示例注解。

今后的课程中我会对每一个涉及的 Bash(或 Windows 命令行)命令都做详细注解。下面我们先把当前这课出现的命令一一讲解清楚。


✅ 本课用到的 Bash / 命令行语句详解

🧱 1. 创建构建目录

mkdir build

意思: 在当前目录下创建一个名为 build 的子目录,用来存放构建生成的文件。

📌 这个命令适用于 Linux/macOS(终端)或 Windows(PowerShell / cmd)
在 cmd 里也可以直接用 mkdir build,含义相同。


📂 2. 进入构建目录

cd build

意思: 切换到 build 目录中,准备在这个目录里运行 CMake。

  • cdchange directory 的缩写

  • 可以用 cd .. 回到上一级目录


🏗️ 3. 配置项目并生成构建文件

cmake .. -G "Visual Studio 17 2022"

意思: 使用 CMake 来读取上一级目录(..)中的 CMakeLists.txt 文件,生成 Visual Studio 工程。

参数解释:

  • ..:表示上一级目录,也就是源码所在的目录

  • -G:指定 Generator,这里是 Visual Studio 17 2022(VS2022)

📌 如果你用的是 Qt Creator,也会自动使用 CMake 命令进行类似的生成过程。


🔨 4. 编译工程

cmake --build . --config Release

意思: 使用 CMake 来执行构建命令(比如调用 VS 的 MSBuild 或 GNU make),编译当前目录 . 中的构建工程,并指定使用 Release 模式

参数解释:

  • --build .:构建当前目录

  • --config Release:使用 Release 配置(适用于 Visual Studio)

若你使用的是 Makefile 系统,则不需要 --config 参数(详见下条)。


🧰 5. 另一种构建方式(MinGW)

cmake .. -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release
mingw32-make

意思: 用 MinGW 工具链生成 Makefile,并用 mingw32-make 编译。

参数解释:

  • -DCMAKE_BUILD_TYPE=Release:设置构建类型为 Release(适用于 Makefile / Ninja)

  • mingw32-make:MinGW 提供的 make 工具

📌 这一方式只在你已经安装了 MinGW 编译器时可用。


🔁 命令对照总结表

命令含义说明
mkdir build创建构建目录
cd build进入构建目录
cmake ..读取上层的 CMakeLists.txt
-G "Visual Studio..."指定用什么构建系统
--build .执行构建命令
--config Release/Debug指定构建类型(仅适用于 VS)
-DCMAKE_BUILD_TYPE=Debug设置构建类型(用于 Make/Ninja)
makemingw32-make执行实际的编译操作

今后的所有 Bash / cmd 语句,我都会以这样的方式附带讲解。

我的CMake专栏

相关文章:

  • 如何代做网站网站优化方案设计
  • wordpress 跨站调用网络推广员是什么
  • 系统开发板上海何鹏seo
  • 建设通网站vip北京网站托管
  • 网站维护费一般多少钱网络营销图片素材
  • 淘宝做网站费用哪家网络公司比较好
  • 60页PPT实战方案 | 大数据决策分析平台建设全流程路径图
  • Bright Data亮数据 MCP + N8N x AI 新闻编辑:基于亮数据,数据采集到观点摘要工作流自动化实践
  • “Ubuntu 18.04.6 LTS“ 配置网卡静态IP
  • 数据赋能(324)——安全与合规——所有权
  • 实战 X-AnyLabeling:构建高效自动标注系统的工程实践
  • 2012_2NOIP 国王游戏 [贪心+排序+高精]
  • java 对接ETH(以太坊) 交易相关资料
  • 跟着AI学习C#之项目实践Day7
  • 在uni-app build的index.html 中加入 <mate,和title 等标签内容 内容
  • 《大模型 Agent 应用实战指南》第2章:商业目标与 Agent 能力边界定义
  • 【评估指标】MAP@k (目标检测)
  • 探索解析C++ STL中的 list:双向链表的高效实现与迭代器
  • Linux学习笔记:PCIe内核篇(3):DPC服务
  • 浪潮存储单卷单LUN不能超过64T、128T解决方法
  • 领域驱动设计(DDD)【13】之重构中的坏味道:深入理解依恋特性(Feature Envy)与表意接口模式
  • 深入浅出:RocketMQ与Kafka的双剑合璧,实现高可用与高吞吐
  • 计算机网络-----详解HTTP协议
  • 用Python做一个手机镜头
  • GitHub中openmmlab和Detectron2的区别
  • 打造灵活强大的PDF解析管道:从文本提取到智能分块的全流程实战