macOS 上 C++ 开发选择什么 IDE 更好: CLion, Xcode, Visual Studio?

2023-03-26 12:09:59 +08:00
 DSM

本人 cs 在读,计算机系统是 macOS ,学校 EECS 课程一般都用 C++

从之前高中开始学 C++ 开始都是用的 CLion (.edu 邮箱激活),直到最近学校课程的一个项目从编写到调试完用了一周多。觉得时间过长,希望看看会不会其他的 IDE 更方便一些。看到网上有人说 Visual Studio 的 debugging 功能更好,想试试。

请教一下 V2EX 的各位,什么 C++ 的 IDE 在 macOS 上推荐:CLion, Xcode, 或者 Visual Studio ?

谢谢啦~!

5087 次点击
所在节点    问与答
16 条回复
SMGdcAt4kPPQ
2023-03-26 12:11:37 +08:00
VS for Mac 不支持 C++
aliceclark
2023-03-26 12:24:53 +08:00
visual studio for mac 是用来写.net
xcode 没用来写过 C++,写 swift 的时候他直接从 github 下 package 很好用,不知道对 C++管不管用
最后还是推荐 CLion ,ssh 到旁边的 linux 机器或者 docker 一个 linux
还有 eclipse codeblock qtcreator 啥的,看着就不太喜欢
其实用 vscode 写也行,就是编译时候要直接用命令行
levelworm
2023-03-26 12:29:16 +08:00
学习的话推荐 linux vm 加 vscode ,会推动自己学 cmake 之类的工具,但是比单纯的文本编辑器又强大许多。
c00r1f
2023-03-26 13:19:31 +08:00
vscode 配合 docker desktop 试试
star9029
2023-03-26 13:22:48 +08:00
编译器 -> clang
构建系统 -> xmake
ide -> vscode(editor) + clangd(intellisense) + codelldb(debug)
Hsinyao
2023-03-26 13:33:33 +08:00
你只需要一个能够提高效率的编辑器来编写代码,比如 vscode+clangd ,其余编译和 debug 直接用对应的命令行工具完成

比如编译,可以直接 gcc ,文件多了写 make 或者 cmake

再比如 debug ,直接 gdb 就好了

IDE 上的各种按钮最后也不过是调用这些底层的命令行工具实现,所以不如直接学习这些命令行工具的用法
mauis
2023-03-26 13:36:46 +08:00
vscode +1 票。
daveh
2023-03-26 13:38:30 +08:00
CLion 已经是最好用的了,花时间久跟这有关?
有些技巧可以学学,比如自己感觉哪里慢,有不方便的地方,也许是没掌握技巧的原因。
phiysng
2023-03-26 14:17:00 +08:00
“我全都要”。

用 CMake/XMake 这类的工具可以生成各种 IDE 的工程文件,想用哪个生成一下就可以了。


几年前用 XCode 写 C++感觉很难用,现在不知道咋样; CLion 的调试功能现在对学生应该是很够用了。
我的习惯是写代码用 CLion,需要附加进程 /调试 Dump 的时候切到 Visual Studio 。
phiysng
2023-03-26 14:18:34 +08:00
#9 Windows 下的 Visual Studio
ixcode
2023-03-26 15:10:36 +08:00
这不是 IDE 的问题,这是 C++的问题
MoRanjiang
2023-03-26 15:16:21 +08:00
同学用 VSCode 比较多
agagega
2023-03-26 15:26:31 +08:00
Xcode 只是缺少一些功能(比如用终端不方便),还有恶心强迫症(我就没见过其他 IDE 允许自定义文件顺序的),写标准的 Cpp 项目用 Xcode 没啥问题,还不用操心 CMakeLists 怎么写(不管所谓 modern cmake 拥趸怎么吹,这种命令式语法始终很奇怪,有时候甚至不如 Makefile 直观)。

CLion 也很好,功能比 Xcode 丰富,对 clang-format 之类工具支持也更好。没有特殊需求,有 CLion 用就别去折腾 vscode 了。
listenerri
2023-03-26 16:09:39 +08:00
clion 很好了,该有的功能都支持,除了基础 IDE 功能,还有类似 vscode 远程开发调试,对 cmake 的支持最近的版本也足够完善了。
letianqiu
2023-03-26 17:50:39 +08:00
CLion 暂时多了 call hierarchy 功能,但是 vscode cpp tools 下一个版本 1.15 也会支持 call hierarchy 。马上正式 release 的 Qt Creator 10 也支持 call hierarchy 了。vscode 可以配置 task ,配置好以后编译也不需要打开终端了,鼠标点 run build task 就可以了。
ketor
2023-03-26 23:25:56 +08:00
同时用 vim 、CLion 、vscode 开发 C++用了挺长一段时间,分享一下自己的经验。
vim:用起来最顺手的,会有一点学习曲线陡峭的问题。vim 相对来说是投入产出比最高的了,一次学习,终生受益。VIM 对各种 C++项目的适应性是最好的,使用 YouCompleteMe 配合 clangd ,无论是 cmake 项目还是 makefile 项目,统统生成 compile_commands.json 之后就可以无缝衔接了。 同时配合上 gtags-cscope 之后,基本的 Find References 也比较丝滑了。 至于 easymotion 、multicursor 都是 vim 上必备的了。可以看看 skywind3000 讲解如何使用 vim 搭建 C++开发环境的,他应该主要是 Windows 环境比较多,在 Mac 上也类似的,但要讲兼容性,还是整个 ubuntu 的 vm 比较容易一些。

vscode:clangd + microsoft cpp ,这个具体可以看 clangd 官方网站的介绍的 best pracitce( https://clangd.llvm.org/installation),里面对于主流的编辑器如何配置都有详细介绍。 vscode 安装 vim 插件之后,自带了 easymotion 等一些比较好用的 vim 插件,相对来说比 JetBrains 家的 IdeaVim 要更加全面一些,但是实际用起来似乎没有 IdeaVim 那么稳定。vscode 的好处是可定制性非常强,和 vim 一样对于 cmake 和 makefile 项目都能比较好的支持,代码提示、静态代码检查这些基于 clangd 干的事也都能干得好。 通过精心配置之后,vscode 也可以做到几乎完全用键盘操作了。 如果用普通鼠标的话,vscode 的滚动比例需要调整一下,不然在 mac 下鼠标滚动非常神经质,用 trackpad 和 magic mouse 的话是感觉不到这个滚动问题的。
vscode 的最大优势个人认为是 remote 模式确实做得非常棒,比 Clion 要好很多很多很多。。。。。, 但是 vscode 时不时会有一些小问题,比如撤销编辑这个操作,cmd+z 和 vim 里的 u ,感觉有冲突,总是不小心就撤销错了。

clion: 它其实也是基于 clangd 来搞的,相对来说更加开箱即用得多,几乎是 0 配置就可用了,代码编辑这个功能本身做的个人认为比 vscode 要流畅丝滑很多,插件的成熟度比 vscode 高一些,但是数量少很多,容易有一些功能就不好实现。但是也有一些比如 multi-highlight 这种好用的插件,vscode 没有对应的。clion 的代码索引做得会比较好用一些,跟 idea 那个体验有一拼了,如果项目是完全用 cmake 管理,没有 extenral_project 的话,那么 clion 的体验是非常棒的。
clion 的缺点很明显也很要命,首先是 remote development 用起来一言难尽,与 vscode 的 remote 相比简直连 beta 都算不上,即使把服务器上 clion 的内存堆大小开到 12G 以上,也没什么实质的提升,稍微大一点的项目,动不动就索引失效了,然后卡半天建索引,体验真的一言难尽。
clion 的另一个缺点就是只能对 cmake 管理的项目有比较好的体验,一旦这个项目混合了 cmake 和 makefile ,或者 cmake 里面有 external_project ,那代码索引的能力就非常捉急了。
忍了很久 clion 的这些问题,最后放弃使用了。 有些 C++项目在 Mac 上比较难搞,所以 remote 是刚需。


总体来说,vim 有一定的学习曲线,需要投入一些时间,效率提升地反馈没有那么快。但是还是建议一定要学习和使用 vim ,因为即使 vscode 、clion 这些都在安装 vim 插件之后才有更高的效率。 另外配置 vim 插件的过程中,你能够对 c++开发过程中的很多细节有更好的理解,比如 clangd 的代码提示怎么才能生成,clang-tidy 是怎么回事,clang-format 又是怎么回事,分别是怎么配置的,vim 和 git 怎么集成的,git 内部的数据结构大概是什么样的,等等。
这样在使用 vscode 、clion 的时候,对于很多问题就会有更加透彻的理解,而不是完全只能当成一个黑盒使用。

最后,现在主力使用的是 vscode ( 70%时间),辅助使用 vim ( 25%时间),很少使用 clion ( 5%时间)。vscode 上同时使用 clangd 、clang-format (为了格式化 proto ,clangd 自身好像没法 format proto 文件)、microsoft cpp 、vim 等等插件,平时主要是用 vscode 的 remote 模式,代码和环境都放服务器上,ubuntu 、centos 、rocky 都有,虚拟机、物理机、Docker Container 都有,总体来说体验是比较好的。
vim 效率跟 vscode 差不多,由于 vscode 偶尔有些小毛病,vim 甚至可能还要效率更高,但是 vim 的主要问题是 YouCompeteMe 这个插件在一些老的系统上编译起来比较麻烦,每个机器都去配置环境也是个挺浪费时间的事,vscode 就省心很多,自动安装就行了。

啰啰嗦嗦说了很多,希望对 OP 能有帮助:)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/927241

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX