写点什么

C/C++ 开发工具 CLion 新版发布,10 大新功能抢先看

2020 年 4 月 16 日

C/C++开发工具CLion新版发布,10大新功能抢先看


距上次更新 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”(新建项目)向导中。

  • 生成基于 CMake 的相应 PlatformIO 项目。

  • 自动创建用于调试和上载的配置。

  • 允许在线通过 PIO Unified Debugger(统一调试器)在 CLion 中进行调试。


还有更多新功能,请查看官方文档了解更多细节。


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_executablecuda_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 的条件、无限循环、缺失的返回声明、无限递归,等等。在 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 字段提供了指定要在所有用法中使用的参数值的功能。保持为空,以便像以前一样使用默认值类型。


相同的逻辑和新的 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(进入禅宗模式)。


英文原文:


What’s New in CLion


2020 年 4 月 16 日 22:154480
用户头像

发布了 338 篇内容, 共 129.3 次阅读, 收获喜欢 853 次。

关注

评论 1 条评论

发布
用户头像
点赞
2020 年 04 月 22 日 12:33
回复
没有更多了
发现更多内容

监控之美——Prometheus云原生监控

华章IT

运维 云原生 监控 Prometheus

CPU虚拟化系列文章1——x86架构CPU虚拟化

华章IT

云计算 Linux cpu 操作系统 虚拟化

美团架构师总结整理的这份GitHub标星150K+的神仙笔记,我花了两个月肝完成功面进了阿里定级P7,现在分享出来希望大家也能有所提升!

Java架构之路

Java 程序员 架构 面试 编程语言

ThinkPad X1 Carbon与MacBook有何不同?不止是专业

新闻科技资讯

甲方日常 58

句子

工作 随笔杂谈 日常

LeetCode题解:17. 电话号码的字母组合,队列,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

秋招offer收割机——后台服务器开发方向(专业学习路线图总结)

程序员小灰

c++ Linux 后台开发 架构师 服务器端开发

支付宝阿牛整合Netty+Redis+ZooKeeper「终极版」高并发手册

Java架构追梦

Java redis zookeeper 面试 Netty

最详细的Linux TCP/IP 协议栈源码分析

linux大本营

Linux 后台开发 网络编程 C/C++ TCP/IP

没想到我费劲心力学的kafka,还不如阿里大佬整理的这份学习手册,真的是差距啊

小Q

Java kafka 学习 架构 面试

【领福利啦】广受欢迎的人工智能实战课程+“智能音箱”教程免费领!

华妹

人工智能 技术 福利 项目实战 智能音箱

前嗅教你大数据:常见的网站反爬策略与解决方案

前嗅大数据

大数据 数据采集 代理IP 网站反爬 反爬策略

广电总局严打劣迹主播:净化行业环境迫在眉睫

石头IT视角

高德最佳实践:Serverless 规模化落地有哪些价值?

阿里巴巴云原生

阿里云 Serverless 云原生

区块链政务数据应用系统开发方案,数据快速上链

WX13823153201

谈谈持续集成、持续交付和持续部署三者究竟是什么,有何联系和区别呢!

ShenDu_Linux

Linux 持续集成 架构师 持续交付 持续部署

一文带你了解两种Transformer文字识别方法

华为云开发者社区

人工智能 AI 文字识别

收藏 | 阿里程序员常用的 15 款开发者工具(2020 版)

阿里巴巴云原生

阿里云 程序员 开发者 云原生 Java 25 周年

技术实践丨基于MindSpore框架Yolov3-darknet模型的篮球动作检测体验

华为云开发者社区

AI 华为云 modelarts

《迅雷链精品课》第八课:迅雷链多链结构

迅雷链

区块链

如何保障企业数据资产的全生命周期安全?看这篇就够了

华为云开发者社区

数据 数据资产 数据安全

通过python基于netconf协议获取网络中网元的配置数据,助力企业网络控制自动化轻松实现!

华为云开发者社区

通信 企业 网络自动化

感恩,改变世界的开发者们!

京东科技开发者

开发者 程序人生

继linux命令之后,我又给你们整理了网络命令归纳,快给我来收藏

北游学Java

Linux 网络协议 网络 网络层

Week1 命题作业

J

极客大学架构师训练营

分享一份大佬的MySQL数据库设计规范,值得收藏

小Q

学习 架构 面试 JVM 多线程

涨薪神作!华为内部操作系统与网络协议笔记爆火,这也太香了吧

Java架构之路

Java 程序员 架构 面试 编程语言

深入内核,拒绝蒙圈!阿里巴巴一位P7级架构师总结整理的这份《Java架构成长笔记》彻底火了。

Java架构之路

Java 程序员 架构 面试 编程语言

信息聚合接口的实现与展望

QiyihaoLabs

高并发系统设计

11.11数据可视化大屏设计揭秘

京东科技开发者

大数据 AI 数据分析 数据可视化 交互设计

索引为什么能提供查询性能...

小林coding

MySQL 索引 数据结构与算法 B+树

C/C++开发工具CLion新版发布,10大新功能抢先看-InfoQ