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

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.xdnf.cn/news/17829.html

相关文章:

  • 猿大师中间件:Chrome网页内嵌PhotoShop微信桌面应用程序
  • php7 太空船运算符
  • opencv:直方图
  • 【车联网kafka】Kafka核心架构与实战经验(第四篇)
  • mapbox进阶,实现精灵图生成和拆分(小图任意大小,不固定),并简单使用
  • Laravel 使用ssh链接远程数据库
  • 第十六届蓝桥杯青少组C++省赛[2025.8.9]第二部分编程题(1 、庆典队列)
  • 【Java基础|第十八篇】面向对象(八)——包装类
  • Docker安装influxdb以及python基本操作
  • 微店平台平台关键字搜索接口实战:从精准检索到智能推荐实现
  • JetPack系列教程(六):Paging——让分页加载不再“秃”然
  • 职场与生活如何在手机中共存?(二)
  • aliases 的意义和作用?
  • Harmony OS 开发入门 第三章
  • 四、深入剖析Java程序逻辑控制:从字节码到性能优化
  • Android 双屏异显技术全解析:从原理到实战的多屏交互方案
  • sqli-libs通关教程(51-65)
  • Linux系统编程Day13 -- 程序地址空间(进阶)
  • 18.9 BERT问答模型实战:从数据到部署的完整指南
  • dolphinscheduler 依赖节点不通过
  • 【Spring Boot 3.0 + JDK 17 新手指南:完整用户管理系统】
  • ADB 无线调试连接(Windows + WSL 环境)
  • AI一周事件(2025年8月6日-8月12日)
  • 字符串匹配算法
  • 深度学习——03 神经网络(3)-网络优化方法
  • cisco无线WLC flexconnect配置
  • latex中“itemize”
  • 了解 Linux 中的 /usr 目录以及 bin、sbin 和 lib 的演变
  • 肖臻《区块链技术与应用》第十一讲:比特币核心概念重温:一文读懂私钥、交易、挖矿与网络现状
  • 深入解析 AUTOSAR:汽车软件开发的革命性架构