Clang 代码模型
代码模型是集成开发环境的一部分,它能理解您编写应用程序所使用的语言。它是允许Qt Creator 提供以下服务的框架:
Clang 代码模型插件在Clangd 的基础上为 C++ 提供了其中一些服务。
关于 Clang 代码模型
Clang 项目拥有用于解析 C 语言族源文件的库。通过警告和错误标记获得的反馈与编译器提供的反馈相同,而不是不完整的或近似的,如使用内置的Qt Creator 代码模型。Clang 注重诊断的详细信息,这在代码有错别字时非常有用。我们通过 clangd 工具使用这些库,该工具实现了一个LSP服务器。
Clang 与 C++ 语言的发展同步。在撰写本文时,它支持 C++98/03、C++11、C++14、C++17、C89、C99、Objective-C 和 Objective-C++。
缺点是,对于大型项目,使用 Clang 作为代码模型比使用内置代码模型要慢。Clang 不需要生成对象文件,但仍需要解析和分析源文件。对于只使用 STL 的小型项目,速度相对较快。但对于包含多个文件的大型项目,处理单个文件和所有包含的文件可能需要一段时间。
现在,Clang 代码模型插件提供了一些与内置 C/C++ 代码模型相同的服务:
- 代码自动补全
- 语法和语义高亮
- 诊断
- 符号大纲
- 工具提示
- 跟踪符号
- 重命名符号
- 查找符号的出现
要使用内置代码模型,请选择首选项>C++ >clangd ,然后清除Use clangd 复选框。此设置也存在于项目级别,因此您可以在一般情况下启用基于 Clang 的服务,但在某些项目中将其关闭,反之亦然。
您可以为以下项目配置 Clang 诊断:
- Clang 代码模型(全局或项目级别)
- Clang 工具(全局或项目级别)
Clangd 索引
clangd索引可为查找引用、跟踪光标下的符号和使用定位器等服务提供准确而完整的结果,即使是复杂的构造也不例外。打开项目时,clangd 会扫描源文件以生成索引。对于大型项目,这可能需要一段时间,但索引是持久的,重新扫描是增量的,因此关闭并重新启动Qt Creator 不会造成任何损失。
要暂时禁用全局索引,请选择Toggle Progress Details (1),然后在进度条上选择X 。
默认情况下,Qt Creator ,每个项目运行一个 clangd 进程。如果创建的会话有相关项目,则可以指定会话中的项目由一个 clangd 进程管理。
大纲"视图中的文档大纲由 clangd 的文档符号支持,这使得结果比以前更可靠。
另请参阅 配置 C++ 代码模型、指定 clangd 设置、指定 Clang 工具设置、使用编译数据库、代码模型和Clangd。
Copyright © The Qt Company Ltd. and other contributors. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.