英文原文:What’s New in CLion
距上次更新 1 年后,Jetbrains 旗下的 C/C++ 开发工具 CLion 迎来新版——CLion 2020.1 。
据官方介绍,CLion 2020.1 针对许多 IDE 功能带来诸多改进,比如语言支持、 the debugger、the formatter 和 refactorings 等。
“除 Windows 开发人员,嵌入式和 CUDA 项目的开发人员也能体会到 CLion 为他们带来的好处。”Jetbrains 写道。
CLion(30 天免费试用版)的下载地址。
1. 嵌入式开发
IAR 工具链
如果你在嵌入式项目中使用 IAR 编译器 / 工具链,那现在,你在 CLion 中也可以这样做了。收集编译器信息不会再出现失败,这意味着使用 IAR 工具链的项目将会成功加载,并在 CLion 中工作。
这有几点事项要注意:
- MinGW 是必需的。
- 关于在 IAR Embedded Workbench 使用 CMake 的一些技巧。
PlatformIO
PlatformIO 是正在迅速普及的新一代生态系统。要在你的嵌入式项目里从中受益,请利用新的 PlatformIO for CLion 插件,该插件具有以下新功能:
- 将 PlatformIO 项目类型添加到“New Project”(新建项目)向导中。
- 生成相应的基于 PlatformIO CMake 的项目。
- 自动创建用于调试和上载的配置。
- 允许使用片上 CLion 的 PIO Unified Debugger(统一调试器)进行调试。
还有更多新功能,请查看官方文档了解更多细节。
2. CUDA 支持
代码解析和代码辅助
在 CUDA C 和 C++ 中的代码,包括所有 CUDA 特定的扩展,现在可以正确地解析并高亮显示了。这意味着代码导航、软件文档和其他代码辅助操作在 CUDA 代码中都能正常工作。此外,CLion 还可以完成内核调用的尖括号。
让我们从 GitHub 克隆 ClaraGenomicsAnalysis 项目,看看 CLion 在 CUDA 支持方面的能力。
新建项目向导
CLion 中的“New Project”(新建项目)向导已经更新,增加了创建 CUDA 项目的新选项:Library (库) 或 Executable (可执行文件)。选中后,它将生成示例 CMakeLists.txt 和 main.cu 文件。
文件扩展名和 CMake 目标
在 “New C/C++ Source File”(新建 C/C++ 源文件)对话框中新增了 CUDA 文件扩展名的知识:.cu 和 *.cuh*。这个对话框要更新的可能目标列表包括常规 CMake 和 CUDA 特定目标(使用 cuda_add_executable
和 cuda_add_library
命令创建)。
点此处了解更多信息。
3. Windows 环境下的开发
Clang-cl
我们现在已经可以在 Windows 上使用 CLion 中的 Clang-cl,支持 8.0 及以后的版本。
你能从 LLVM 网站或与 Visual Studio 工具一起安装。安装完成后,在 CLion 中选择 Visual Studio 工具链,然后在工具链设置中指向 clang-cl.exe。
Visual Studio C++ 工具链的调试器
JetBrains 为 Visual Studio C++ 工具链开发的基于 LLDB 的调试器,现在它已经是该工具链的默认调试器。因此你可以马上开始使用。
注意,要启用对本地可视化工具的捆绑支持,应该这样开启:Settings
(设置) Build
(构建)、Execution
(执行)、Deployment
(部署) Debugger Data Views
(调试器数据视图) Enable NatVis renderers for LLDB
(启用 LLDB 的 NatVis 渲染器)。
4. 运行和调试配置
远程和嵌入式 GDB 的自定义目标
Remote GDB Server(远程 GDB 服务器)和 Embedded GDB Server (嵌入式 GDB 服务器) 配置现在可以使用自定义目标了。这些配置以前只适用于 CMake 目标,让你能在远程主机上调试应用程序,或者在本地机器上运行的 CLion 实例的微控制器上调试应用程序。
如果你已经创建了这些配置,CLion 2020.1 将在项目文件夹中的 projectFilesBackup
目录中存储以前的 Run/Debug Configuration(运行 / 调试配置)设置,并将就此通知你。
在运行 / 调试配置中支持宏和路径变量
现在,你能在 CMake、Custom Build(自定义构建)和 Gradle Native Applications(Gradle 本地应用)配置中的 Program Arguments(程序参数)和 Working Directory(工作目录)字段中使用 Path Variables(路径变量)和宏了。宏可以帮助你获取以下的值:
- 当前 CMake 运行配置的构建目录。
- 当前 CMake 运行配置的生成目录。
- 项目文件目录。
- 还有许多其他。
FilePrompt/Prompt 宏可以用来在运行 / 调试配置时显示文件选择对话框或字符串输入对话框。
Path Variable(路径变量)可以定义库的路径,该库在项目中广泛使用,但不在项目文件目录之中。
输入重定向
如果需要将输入从文件重定向到应用程序的 STDIN(标准串流),现在可以这样做了。在配置中使用名为 Redirect input from 的新字段。输入:
- 相对路径(CLion 将以 Working directory path(工作目录路径)为前缀)。
- 绝对路径(将为远程配置重新映射)。
- 或宏(如 FilePrompt)。
5. Clang 工具
Clangd 上的数据流分析
CLion 的 Data Flow Analysis (DFA,数据流分析)能完成编译器通常不能做的事情:它分析数据如何流经代码,并根据结果检测潜在问题。它捕获的条件始终为 false/true、无限循环、缺少 return 语句、无限递归等等。在 2020.1 版本中,DFA 已经转移到基于 Clangd 的语言引擎上,在性能上变得更加精准,也更加轻便。尽管这项工作仍在进展之中,但已经取得了一些好成果!
仅限 Clangd 完成
默认情况下开启了一种新的模式,在这种模式下,基于 Clangd 的语言引擎完全提供完整结果。这种模式解决了当多个引擎的代码完成结果混合在一起时出现的优先级和排序问题。这种行为是由 Settings
(设置)Languages & Frameworks
(语言和框架)C/C++
Clangd
中的 Code Completion(代码完成)设置控制的。
这个新模式因几十种不同的修复和增强功能精准而强大。
点此处了解更多信息。
ClangFormat
现在,当你第一次在项目根目录中使用 .clang-format 的配置文件打开项目时,CLion 将检测到该项目并自动切换到 ClangFormat。
如果你在没有 .clang-format 配置文件的项目上启用了 ClangFormat,CLion 会建议你创建一个。
Clang-Tidy
当在项目中检测到 .clang-tidy 配置文件时,CLion 现在会自动关闭 Clang-Tidy 的 IDE 设置的使用。这一行为是由 Prefer.clang-tidy 文件控制的,而不是通过 IDE 设置中的 Settings
(设置)Editor
(编辑器)Inspections
(检查)C/C++
General
(通用)Clang-Tidy
控制。
6. 代码格式化器和代码折叠
新的命名设置
结构成员字段和类成员字段现在有了单独的命名设置。在 Settings
(设置)Editor
(编辑器)Code Style
(代码风格)C/C++
Naming Convention
(命名约定)中查看。
代码折叠
#pragma region
和 #pragma endregion
可用于 CLion 的代码折叠。
7. 重构更新
在调用 Change Signature 进行重构(Ctrl+F6
)时,CLion 将会更新该函数的所有用法。Change Signature 对话框中的一个新的 Default value 字段提供了指定要在所有用法中使用的参数值的功能。保持为空,以便像以前一样使用默认值类型。
相同的逻辑和新的默认值字段应用于 Create Parameter From Usage(根据使用情况创建参数)的快速解决和 Add Parameter to Constructor(向构造函数中添加参数)的意图。
8. 编辑器
快速文档
Quick Documentation(快速文档)——一种通用的工具,可以预览文档,并获取有关函数签名、推断类型和宏替换的信息。它可以通过 Settings
(设置)Editor
(编辑器)Code Editing
(代码编辑)中的“Show quick documentation on mouse move”(显示鼠标移动的快速文档)的设置进行控制。
JetBrains Mono 和 IntelliJ Light
编辑器中的默认字体已更改为 JetBrains Mono ,这是 JetBrains 创建的一种新的开源字体。它的设计是为了让阅读代码更容易。
IntelliJ Light,一种新的默认 light 主题,现在是所有不同操作系统的标准主题。如果你想选择一个非默认的主题,请使用 View
(视图)Quick Switch Scheme
(快速切换组合)Theme to select a non-default theme
(选择非默认主题的主题)来选择非默认主题。
拆分终端会话
使用 CLion 2020.1,你可以垂直或水平拆分终端会话,这样就可以并排运行这些终端会话。你可以从终端调用上下文菜单来创建、导航和关闭拆分终端会话。
9. 版本控制
新建提交工具窗口
更新后的工具窗口为修改后的文件列表和差异提供了更多的空间,还允许你在提交准备就绪时,将更改添加到提交中,迭代地编写提交消息,并选择将哪些分段更改进入哪个提交中。
新用户默认启用的是新的用户界面;而现有用户可以在 Settings
(设置)Version Control
(版本控制)Commit
(提交)中切换到新的用户界面。
从此处以交互方式进行变基(rebase)提交
一个更新的、真正的交互式对话框使以下操作成为可能:
- 选择要对分支中的每个提交执行的操作。
- 检查显示已应用哪些操作的图表。
- 查看提交详细信息。
- 查看差异,并在必要时检查或重置更改。
从 IDE 中安装 Git
Version Control(版本控制)工具窗口现在称为 Git 工具窗口,或者 Subversion/Mercurial/Perforce(如果你使用这些窗口中任何一种而不是 Git 的话)。
你不再需要手动预装 Git 了!当你使用 Git 打开一个项目或从 VCS 导入一个项目时,如果你的机器上没有 Git 的话,CLion 会提供下载并安装 Git。
10. Rust 插件更新
通过对 LLDB 支持的改进, IntelliJ Rust 现在可以正确地呈现枚举类型和原始类型(primitive types),它还可以在调用堆栈中显示符号重组(demangle)的函数名。
该插件的另一个主要更新是 REPL 集成。从 Tools
(工具)Rust REPL
调用控制台,并将其用于原型设计和逐行检查代码。该集成提供了语法高亮显示和代码完成功能,以及一些方面的控制台操作:命令历史记录、软换行、快速滚动到末尾等等。
在语言支持方面,IntelliJ Rust 现在可以处理类型别名的 impl
块。考虑到性能,我们只对别名数量有限的类型启用了这个功能。
其他增强功能还包括高亮显示未使用的本地变量、cfg
属性注重中的修复以及新的 Lift 返回检查。
其他改进
- 现在,所有远程配置都可以使用通用和统一的 SSH Configurations(SSH 配置)用户界面了。无论新的 SSH 配置文件源自何处(远程工具链设置或远程 GDB 服务器配置),它都会在
Settings
(设置)Tools
(工具)SSH Configurations
(SSH 配置) 有一个条目。 - 如果你只想专注于源代码,你可以选择一种新的 Zen(禅宗)模式,它将无干扰模式与全屏模式结合在一起。要弃用这个模式,请使用
View
(视图)Appearance
(外观)Enter Zen Mode
(进入禅宗模式)。