Qt Creator 21 — CMake 变更

💡 原文英文,约900词,阅读约需4分钟。
📝

内容提要

Qt Creator 21 大幅增强 CMake 支持:新增基于 qlalr 的 CMake 解析器,实现缩进、格式化与快速修复;可解析 .rst 文档并识别函数参数;支持跨平台源文件灰显、目标查找与重命名、安装信息及自动头文件检测;CMake Presets 新增 runDevice 与 runSettings 扩展;并新增 cm/ct 定位器、性能分析跳转和离线帮助。

🔎

延伸解读

新解析器带来的编辑体验提升

Qt Creator 21 采用基于 qlalr 的新 CMake 解析器,不仅改善了语法高亮,还实现了缩进、格式化和快速修复。快速修复能自动创建缺失的源文件、为 add_subdirectory 生成 CMakeLists.txt,或为 find_package(Qt6 COMPONENTS) 安装所需 Qt 组件。这些功能减少了手动修改 CMake 脚本的繁琐,尤其适合频繁调整项目结构的开发者。

跨平台源文件与目标导航的实用改进

CMake 项目现在能像 QMake 一样,在项目树中灰显当前配置未包含的源文件,方便识别跨平台代码。同时,查找用法(Ctrl+Shift+U)和重命名(Ctrl+Shift+R)已支持 CMake 目标,提升了大型项目中目标引用的维护效率。这些改进让 CMake 项目的浏览和重构更接近传统 IDE 体验。

自动头文件检测的权衡

新设置“通过询问编译器查找头文件”(默认关闭)允许 Qt Creator 调用编译器列出源文件依赖,并保存到 .qtcreator/header-deps 数据库,从而在项目树中显示未在 CMake 中声明的头文件。优点是无需在 CMake 中显式列出头文件;缺点是额外的编译器调用会带来开销。开发者需根据项目规模和构建频率权衡是否启用。

CMake Presets 厂商扩展与运行配置

Qt Creator 21 为 CMake Presets 增加了 runDevice 和 runSettings 厂商扩展。runDevice 可指定运行设备(如 WSL 远程 Linux),简化交叉编译后的部署;runSettings 则允许从 Presets 创建运行配置,支持自定义工作目录、命令行参数和环境变量。这些扩展让 CMake Presets 不仅能配置构建,还能统一管理运行环境,减少手动配置。

❓

Q&A

Qt Creator 21 对 CMake 编辑器做了哪些改进?

Qt Creator 21 引入了基于 qlalr 的新 CMake 语言解析器,并由此实现了 CMake 缩进器、格式化器以及快速修复功能。快速修复包括:创建缺失的源文件、为 add_subdirectory 调用创建 CMakeLists.txt、为 find_package(Qt6 COMPONENTS) 调用安装 Qt 组件。

如何在 Qt Creator 21 中查看 CMake 函数的文档和参数?

Qt Creator 21 会解析 CMake 函数/宏的 reStructuredText (.rst) 文档(如果提供),从而显示项目所用 CMake API 的文档。此外,函数和宏的参数会从内部的 cmake_parse_arguments 调用中检测出来,并在编辑器中以不同颜色高亮显示。

Qt Creator 21 如何显示非当前平台的源文件?

对于 CMake 项目,通过 add_executable、add_library 或 target_sources 引用但不在当前配置中的源文件,会在项目树中灰显。这类似于 QMake 之前的功能。

Qt Creator 21 中如何自动检测头文件?有什么优缺点?

可以启用新设置“通过询问编译器查找头文件”(默认关闭),Qt Creator 会调用编译器列出源文件的依赖,并保存到数据库(.qtcreator/header-deps)。优点是无需在 CMake 中指定头文件;缺点是额外的编译器调用开销。

CMake Presets 的 runDevice 扩展有什么作用?能举例说明吗?

runDevice 扩展允许在 CMake Presets 中指定运行设备,便于交叉编译后的部署和运行。例如,在 Windows 上交叉编译 Linux 应用时,可以在 vendor 字段中设置 runDevice 为 {"type": "GenericLinuxOsType", "name": "WSL"},从而指定在 WSL 设备上运行。

Qt Creator 21 的 cm 和 ct 定位器怎么用?

使用“cm”定位器可以执行带自定义参数的 cmake 命令,例如:cm --install . --prefix myinstall、cm -LAH、cm --trace-expand --trace-redirect=cmake.log .。使用“ct”定位器可以在构建目录中运行带自定义参数的 ctest,例如:ct -R timeline,运行匹配正则表达式的测试。

Qt Creator 21 的 CMake 性能分析器有什么新功能?

在性能分析器时间线中点击函数时,Qt Creator 21 现在会跳转到该函数在代码中的位置。

Qt Creator 21 如何获取 CMake 的离线帮助?

CMake 以 Qt Help 文件形式提供文档(doc/cmake/CMake.qch)。从 CMake 4.5.0-rc1 开始,该帮助文件包含与官方 CMake 文档匹配的样式表,并包含深色主题样式表,当 Qt Creator 或 Qt Assistant 使用深色主题时会自动选择。

🏷️

标签

➡️

继续阅读