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

CMake笔记:配置(Configure)、生成(Generate)和构建(Build)

以下为AI生成的内容:

一、配置阶段(Configure)

本质:解析项目逻辑,构建内存模型
触发命令:cmake -S <源码路径> -B <构建路径>
关键操作与输出:

操作类型典型案例输出产物
变量定义set(APP_NAME “Demo”)CMakeCache.txt 缓存文件
依赖查找find_package(OpenCV REQUIRED)记录依赖路径到缓存变量
目标声明add_executable(app main.cpp)内存中的目标对象模型
条件逻辑if(WIN32) … endif()激活/跳过代码块
生成器表达式记录“bin/$”未展开的表达式结构

典型错误:语法错误、未找到依赖包、变量未定义

二、生成阶段(Generate)

本质:转换内存模型为构建系统文件
触发时机:配置成功后自动执行
关键操作与输出:

操作类型典型案例输出产物
生成器表达式展开bin/$ → bin/Debug构建规则中的具体路径
构建系统文件生成根据平台生成 Makefile / .vcxproj完整构建脚本
安装规则转换install() → cmake_install.cmake安装清单与脚本
交叉编译适配应用 CMAKE_TOOLCHAIN_FILE 配置目标平台专属构建指令

典型错误:生成器表达式展开失败、路径冲突

三、构建阶段(Build)

本质:调用原生工具链编译二进制文件
触发命令:cmake --build <构建路径> --config Release
关键操作与输出:

操作类型底层行为输出产物
编译源代码调用 gcc/cl/clang 编译 .cpp.o / .obj 中间文件
链接目标ar / link.exe 合并库与可执行文件.a / .lib / .exe
执行自定义命令运行 add_custom_command() 定义的脚本生成的资源/代码文件
安装构建结果执行 cmake_install.cmake目标目录中的可部署文件

典型错误:编译错误、链接符号缺失、文件权限问题

http://www.dtcms.com/a/330248.html

相关文章:

  • 软件架构重构:从混沌到有序的系统性演进
  • 第6节 torch.nn介绍
  • 什么是脏读、幻读、不可重复读?
  • linux编程----文件(framebuffer)
  • 正则表达式解析(三)
  • 方法论基础。
  • 与Deepseek对话了解无线电通信知识
  • 自动曝光算法参考
  • Linux Framebuffer(帧缓冲)与基本 UI 绘制技术
  • GitHub宕机时的协作方案
  • 力扣 hot100 Day72
  • Transformer开端
  • 有效涂色问题-二维dp
  • C++进阶之lambda三种回调方式性能差异(四百二十七)
  • 【13】Transformers快速入门:Transformers 分词器 (Tokenizer) 实战?
  • 哈希表之两个数组的交集(leetcode349)
  • 智能合约开发全流程实战指南
  • 【LeetCode】4. 寻找两个正序数组的中位数
  • 芯伯乐300kHz降压DC/DC转换器XBL4005:4.5V~40V宽电压范围,5A大电流高效输出
  • 三伍微电子GSR2406 IoT FEM 2.4G PA 射频前端模组芯片
  • 深入解析C语言嵌套结构体的内存管理与操作实践
  • linux_网络层-ip协议
  • [系统架构设计师]信息安全技术基础知识(三)
  • SpringBoot3+ Elasticsearch8 Spring-data-Elasticsearch使用
  • 多模态数据集分级方案设计与实现
  • 容器基础镜像制作
  • ETLCloud批流一体化体现在哪
  • 【Python】Python 函数基本介绍(详细版)​
  • 版图设计学习2_掌握PDK中的层定义(工艺文档精读)
  • DAY39打卡