当前位置: 首页 > 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.lryc.cn/news/608220.html

相关文章:

  • Ubuntu18网络连接不上也ping不通网络配置问题排查与解决方法
  • 2 安装 Docker 和 Jenkins:持续构建环境起步
  • 音视频学习(四十七):模数转换
  • 题单【模拟与高精度】
  • lumerical——布拉格光栅(2)
  • VS2019安装HoloLens 没有设备选项
  • 类似 Pixso 但更侧重「网页 / 软件界面设计」「前后端可视化开发」的工具
  • 【AI】AIService(基本使用与指令定制)
  • 【MODIS数据】MYD021KM
  • 解决 InputStream 只能读取一次问题
  • 位运算-371.两整数之和-力扣(LeetCode)
  • 9.3panic!最佳实践
  • 高效截图的4款工具深度解析
  • 从基础功能到自主决策, Agent 开发进阶路怎么走?
  • 自动化革命:软件开发的引擎与未来蓝图
  • 二、无摩擦刚体捉取——固定捉取
  • 第14届蓝桥杯Python青少组中/高级组选拔赛(STEMA)2022年12月18日真题
  • C++刷题 - 7.27
  • Rust: 工具链版本更新
  • Kubernetes Service 全面详解:从概念到实践
  • 具身智能VLA困于“数据泥潭”,人类活动视频数据是否是“破局之钥”?
  • 北京-4年功能测试2年空窗-报培训班学测开-今天来聊聊我的痛苦
  • 对于考研数学的理解
  • Linux 系统管理-15-OpenSSH 服务管理
  • 【Pytorch✨】LSTM 入门
  • Next.js 怎么使用 Chakra UI
  • 洛谷做题4:P5713 【深基3.例5】洛谷团队系统
  • OAuth 2.0 详解:现代授权的核心协议
  • 知识随记-----Qt 实战教程:使用 QNetworkAccessManager 发送 HTTP POST
  • Web前端实现银河粒子流动特效的3种技术方案对比与实践