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

CMake 命令行参数完全指南 (1)

参数说明约定
  • 术语解释​:对专业术语提供通俗解释
  • 适用场景​:参数的最佳使用时机
  • 输入要求​:需要用户提供哪些输入
  • 示例​:基于 build 目录的实际用例
  • 初学者提示​:针对新手的特别说明

cmake - 参数详解

1. -A <platform-name>

解释​:指定目标平台名称(用于交叉编译)
术语说明​:交叉编译指在一种操作系统上编译另一种操作系统的程序
输入要求​:平台名称字符串(如 “Win32”、“ARM”)
适用场景​:为不同操作系统或硬件平台编译程序
示例​:

cmake -B build -A "Win32"  # 为32位Windows系统编译
cmake -B build -A "ARM"    # 为ARM架构设备编译

初学者提示​:普通PC开发通常不需要此参数
[[扩展说明:-A 参数]]

​**2. -B <build-directory>**​

解释​:指定构建文件存放位置
术语说明​:构建目录是存放编译中间文件的独立文件夹
输入要求​:目录路径(相对或绝对)
适用场景​:所有CMake项目初始化
示例​:

cmake -B build  # 创建build文件夹存放编译文件

初学者提示​:​必须掌握的核心参数,保持源码目录整洁

​**3. --build <dir>**​

解释​:执行实际编译操作
输入要求​:已存在的构建目录路径
适用场景​:生成可执行文件或库
示例​:

cmake --build build          # 编译项目
cmake --build build -j 4     # 使用4个CPU核心并行编译

初学者提示​:编译前需先用 -B 生成构建系统

​**4. -C <initial-cache-file>**​

解释​:预加载缓存文件设置默认值
术语说明​:缓存文件存储CMake配置参数
输入要求​:CMake脚本文件路径(.cmake格式)
适用场景​:项目标准化配置
示例​:

cmake -B build -C default_settings.cmake

文件内容示例​:

# default_settings.cmake
set(CMAKE_BUILD_TYPE Debug)
set(USE_OPENMP ON)
​**5. --check-system-vars**​

解释​:检查系统环境变量是否被使用
适用场景​:调试环境配置问题
示例​:

cmake -B build --check-system-vars

初学者提示​:高级调试参数,新手可暂不关注

​**6. -D <var>[=<value>]**​

解释​:设置配置参数(最常用参数)
术语说明​:变量是CMake存储配置信息的容器
输入要求​:变量名和可选值(格式:VAR=VALUE
适用场景​:控制功能开关、设置路径等
示例​:

cmake -B build -DCMAKE_BUILD_TYPE=Release  # 设置发布模式
cmake -B build -DUSE_OPENMP=ON             # 启用OpenMP支持

初学者提示​:​必须掌握的核心参数,项目配置的基础

​**7. --debug-output**​

解释​:显示详细处理过程
适用场景​:调试CMake脚本问题
示例​:

cmake -B build --debug-output

输出示例​:

...详细显示CMake执行的每一步...
​**8. --debug-trycompile**​

解释​:显示编译器测试的详细信息
术语说明​:CMake会测试编译器功能以确定兼容性
适用场景​:诊断编译器兼容性问题
示例​:

cmake -B build --debug-trycompile
​**9. -E**​

解释​:调用CMake内置工具命令
支持的命令​:通过 cmake -E help 查看完整列表
适用场景​:文件操作等通用任务
示例​:

cmake -E make_directory new_folder      # 创建目录
cmake -E copy file.txt file_copy.txt    # 复制文件
cmake -E compare_files file1.txt file2.txt # 比较文件
​**10. --find-package**​

解释​:模拟包查找过程
输入要求​:需配合 -D 参数指定查找参数
适用场景​:调试第三方库查找问题
示例​:

cmake --find-package -DNAME=OpenMP -DCOMPILER_ID=GNU

https://github.com/0voice

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

相关文章:

  • 数据结构1-概要、单向链表
  • JVM中的垃圾回收暂停是什么,为什么会出现暂停,不同的垃圾回收机制暂停对比
  • 知识随记-----用 Qt 打造优雅的密码输入框:添加右侧眼睛图标切换显示
  • Ubuntu系统间SSH控制详细指南
  • 由浅入深使用LangGraph创建一个Agent工作流
  • 零拷贝技术:高效数据传输的核心原理与应用
  • 用 JavaSwing 开发经典横版射击游戏:从 0 到 1 实现简易 Contra-like 游戏
  • 20250801-2-Kubernetes 存储-节点本地数据卷_笔记
  • IMAP电子邮件归档系统Mail-Archiver
  • UE5 Insight ProfileCPU
  • 自动驾驶嵌入式软件工程师面试题【持续更新】
  • 回归预测 | Matlab实现CNN-LSTM-self-Attention多变量回归预测
  • Java中的字符串 - String 类
  • 编程与数学 03-002 计算机网络 19_网络新技术研究
  • Java试题-选择题(6)
  • 苏州银行招苏新基金研究部研究员
  • python匿名函数lambda
  • Windows Server软件限制策略(SRP)配置
  • linux进度条程序
  • Educational Codeforces Round 181 (Rated for Div. 2) A-C
  • Mujoco(MuJoCo,全称Multi - Joint dynamics with Contact)一种高性能的物理引擎
  • LLM微调笔记
  • 泛型(java!java!java!)
  • 大模型大厂面试题及解析
  • 【MATLAB】(四)函数运算
  • “AI+固态”从蓝海愿景变为刚性需求,消费电池老将转身狂奔
  • MySQL中索引失效的常见场景
  • 人工智能之数学基础:离散型随机事件概率(古典概型)
  • 基于 LightGBM 的二手车价格预测
  • TCL --- 列表_part2