草庐IT

适用于 Linux 的 C++ IDE?

coder 2023-04-24 原文

关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。












想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。

5年前关闭。











锁定。这个问题及其答案是locked因为这个问题是题外话,但具有历史意义。它目前不接受新的答案或互动。








我想将我的编程视野扩展到 Linux。一个好的、可靠的基本工具集很重要,还有什么比 IDE 更基本呢?

我可以找到这些 SO 主题:

  • Lightweight IDE for linux
  • What tools do you use to develop C++ applications on Linux?

  • 我不是在寻找轻量级 IDE。如果一个 IDE 物有所值,那么我会为它付费,所以它不一定是免费的。

    那么我的问题是:

    What good, C++ programming IDE is available for Linux?



    最低要求是相当标准的:语法高亮、代码完成(如 intellisense 或其 Eclipse 对应物)和集成调试(例如,基本的
    断点)。

    我自己也找过,但是太多了,几乎不可能用手分清优劣,尤其是像我这样在Linux中几乎没有C++编码经验的人。我知道Eclipse supports C++ ,我真的很喜欢 Java 的 IDE,但它对 C++ 有什么好处吗?还有更好的吗?

    第二篇文章实际上有一些很好的建议,但我缺少的是究竟是什么使 sugested IDE 对用户如此有益,它的(缺点)优势是什么?

    因此,也许我的问题应该是:

    What IDE do you propose (given your experiences), and why?

    最佳答案

    最初:困惑

    最初撰写此答案时,我最近从 Visual Studio(具有多年经验)切换到 Linux,我做的第一件事就是尝试找到一个合理的 IDE。当时这是不可能的:没有好的 IDE 存在。

    顿悟:UNIX 是一个 IDE。全部 1

    然后我意识到 Linux 中的 IDE 是带有工具的命令行:

  • 首先你设置你的shell
  • Bash,就我而言,但很多人更喜欢
  • fish
  • (Oh My) Zsh ;
  • 和你的编辑;选择你的毒药——两者都是最先进的:
  • Neovim 2 或
  • Emacs .

  • 根据您的需要,您必须安装和配置几个插件才能使编辑器正常工作(这是一个烦人的部分)。例如,大多数 Vim 程序员将从 YouCompleteMe 中受益。智能自动完成插件。

    完成后,shell 是您与各种工具交互的命令界面——调试器(gdb)、分析器(gprof、valgrind)等。您使用 Make 设置您的项目/构建环境, CMake , SnakeMake或任何各种替代品。并且您使用版本控制系统管理您的代码(大多数人使用 Git )。您还可以使用 tmux (以前也是屏幕)多路复用(= 考虑多个窗口/选项卡/面板)并保留您的终端 session 。

    关键是,由于 shell 和一些工具编写约定,这些都相互集成。这样 Linux shell 是真正的集成开发环境 ,与其他现代 IDE 完全相同。 (这并不意味着单个 IDE 没有命令行可能缺乏的功能,但反之亦然。)

    各有各的

    一旦你养成了这个习惯,我怎么强调上述工作流程的运行效果都不为过。但是有些人只是更喜欢图形编辑器,并且在这个答案最初编写后的几年里,Linux 已经为几种不同的编程语言获得了一套出色的图形 IDE(但据我所知,不是 C++)。即使 - 像我一样 - 你最终没有使用它们,也要试一试。这只是一个小而有偏见的选择:
  • 对于 Python 开发,有 PyCharm
  • 对于 R,有 RStudio
  • 对于 JavaScript 和 TypeScript,有 Visual Studio Code (也是不错的全能编辑器)
  • 最后,许多人喜欢 Sublime Text editor用于一般代码编辑。

  • 请记住,此列表还远未完成。

    1 我从 dsm 的评论中窃取了该标题。

    2 我以前在这里指的是 Vim。虽然普通的 Vim 仍然非常强大,但 Neovim 是一个很有希望的重启,它对一些旧的疣进行了现代化改造。

    关于适用于 Linux 的 C++ IDE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24109/

    有关适用于 Linux 的 C++ IDE?的更多相关文章

    1. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

      大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

    2. ruby-on-rails - 如何优雅地重启 thin + nginx? - 2

      我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server

    3. Ruby Sinatra 配置用于生产和开发 - 2

      我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

    4. ruby - inverse_of 是否适用于 has_many? - 2

      当我使用has_one时,它​​工作得很好,但在has_many上却不行。在这里您可以看到object_id不同,因为它运行了另一个SQL来再次获取它。ruby-1.9.2-p290:001>e=Employee.create(name:'rafael',active:false)ruby-1.9.2-p290:002>b=Badge.create(number:1,employee:e)ruby-1.9.2-p290:003>a=Address.create(street:"123MarketSt",city:"SanDiego",employee:e)ruby-1.9.2-p290

    5. ruby - 使用 `+=` 和 `send` 方法 - 2

      如何将send与+=一起使用?a=20;a.send"+=",10undefinedmethod`+='for20:Fixnuma=20;a+=10=>30 最佳答案 恐怕你不能。+=不是方法,而是语法糖。参见http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_expressions.html它说Incommonwithmanyotherlanguages,Rubyhasasyntacticshortcut:a=a+2maybewrittenasa+=2.你能做的最好的事情是:

    6. ruby - 如何计算 Liquid 中的变量 +1 - 2

      我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我

    7. ruby - "undefined method"用于 rails 模型 - 2

      我正在使用带有Rails的Devise,我想添加一个方法“getAllComments”,所以我这样写:classUser在我的Controller中:defdashboard@user=current_user@comments=@user.getAllComments();end当我访问我的url时,我得到了undefinedmethod`getAllComments'for#我做错了什么?谢谢 最佳答案 因为getAllComments是一个类方法,而您正试图将其作为实例方法访问。您要么需要访问它:User.getAllCom

    8. Ruby on Rails regexp equals-tilde 与 array include 用于检查选项列表 - 2

      我正在使用Rails3.2.3和Ruby1.9.3p0。我发现我经常需要确定某个字符串是否出现在选项列表中。看来我可以使用Ruby数组.includemethod:或正则表达式equals-tildematchshorthand用竖线分隔选项:就性能而言,一个比另一个好吗?还有更好的方法吗? 最佳答案 总结:Array#include?包含String元素,在接受和拒绝输入时均胜出,对于您的示例只有三个可接受的值。对于要检查的更大的集合,看起来Set#include?和String元素可能会获胜。如何测试我们应该根据经验对此进行测试

    9. arrays - Ruby 数组 += vs 推送 - 2

      我有一个数组数组,想将元素附加到子数组。+=做我想做的,但我想了解为什么push不做。我期望的行为(并与+=一起工作):b=Array.new(3,[])b[0]+=["apple"]b[1]+=["orange"]b[2]+=["frog"]b=>[["苹果"],["橙子"],["Frog"]]通过推送,我将推送的元素附加到每个子数组(为什么?):a=Array.new(3,[])a[0].push("apple")a[1].push("orange")a[2].push("frog")a=>[[“苹果”、“橙子”、“Frog”]、[“苹果”、“橙子”、“Frog”]、[“苹果”、“

    10. += 的 Ruby 方法 - 2

      有没有办法让Ruby能够做这样的事情?classPlane@moved=0@x=0defx+=(v)#thisiserror@x+=v@moved+=1enddefto_s"moved#{@moved}times,currentxis#{@x}"endendplane=Plane.newplane.x+=5plane.x+=10putsplane.to_s#moved2times,currentxis15 最佳答案 您不能在Ruby中覆盖复合赋值运算符。任务在内部处理。您应该覆盖+,而不是+=。plane.a+=b与plane.a=

    随机推荐