macOS 上 C++ 开发选择什么 IDE 更好: CLion, Xcode, Visual Studio? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
DSM
V2EX    问与答

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

  •  
  •   DSM 2023-03-26 12:09:59 +08:00 8710 次点击
    这是一个创建于 932 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    谢谢啦~!

    16 条回复    2023-03-26 23:25:56 +08:00
    SMGdcAt4kPPQ
        1
    SMGdcAt4kPPQ  
       2023-03-26 12:11:37 +08:00 via Android
    VS for Mac 不支持 C++
    aliceclark
        2
    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
        3
    levelworm  
       2023-03-26 12:29:16 +08:00 via Android
    学习的话推荐 linux vm 加 vscode ,会推动自己学 cmake 之类的工具,但是比单纯的文本编辑器又强大许多。
    c00r1f
        4
    c00r1f  
       2023-03-26 13:19:31 +08:00 via Android
    vscode 配合 docker desktop 试试
    star9029
        5
    star9029  
       2023-03-26 13:22:48 +08:00   1
    编译器 -> clang
    构建系统 -> xmake
    ide -> vscode(editor) + clangd(intellisense) + codelldb(debug)
    Hsinyao
        6
    Hsinyao  
       2023-03-26 13:33:33 +08:00   1
    你只需要一个能够提高效率的编辑器来编写代码,比如 vscode+clangd ,其余编译和 debug 直接用对应的命令行工具完成

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

    再比如 debug ,直接 gdb 就好了

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

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


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

    CLion 也很好,功能比 Xcode 丰富,对 clang-format 之类工具支持也更好。没有特殊需求,有 CLion 用就别去折腾 vscode 了。
    listenerri
        14
    listenerri  
       2023-03-26 16:09:39 +08:00
    clion 很好了,该有的功能都支持,除了基础 IDE 功能,还有类似 vscode 远程开发调试,对 cmake 的支持最近的版本也足够完善了。
    letianqiu
        15
    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
        16
    ketor  
       2023-03-26 23:25:56 +08:00   15
    同时用 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 能有帮助:)
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5556 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 08:56 PVG 16:56 LAX 01:56 JFK 04:56
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86