C ++ IDE para Linux? [fechadas]

209

Eu quero expandir meus horizontes de programação para o Linux. Um conjunto de ferramentas básico bom e confiável é importante, e o que é mais básico que um IDE?

Eu poderia encontrar estes tópicos de SO:

Não estou procurando um IDE leve . Se um IDE vale o dinheiro, eu pagarei por ele, portanto não precisa ser gratuito.

Minha pergunta então:

Que bom, o IDE de programação C ++ está disponível para Linux?

Os mínimos são bastante padrão: destaque de sintaxe, conclusão de código (como intellisense ou sua contraparte Eclipse) e depuração integrada (por exemplo, pontos de interrupção básicos).

Eu mesmo pesquisei, mas há tantos que é quase impossível separar o bem do mal à mão, especialmente para alguém como eu que tem pouca experiência em codificação C ++ no Linux. Eu sei que o Eclipse suporta C ++ , e eu realmente gosto desse IDE para Java, mas é bom para C ++ e há algo melhor?

O segundo post realmente tem boas sugestões, mas o que estou perdendo é o que exatamente torna o IDE sugerido tão bom para o usuário, quais são suas (des) vantagens?

Talvez minha pergunta deva ser:

Qual IDE você propõe (considerando suas experiências) e por quê?

Peter Mortensen
fonte
1
Esta é, penso eu, a quarta pergunta "Que IDE devo usar no Linux" em um dia ou dois.
Ben Collins
Talvez você deve olhar para a data desta pergunta foi feita ... ou apontar as questões mais recentes para aqui
sven
Na última versão, o Eclipse integrou o eclipse.org/linuxtools em seu mecanismo de lançamento - esse projeto visa tornar o Eclipse um IDE C / C ++ mais completo no Linux, integrando ferramentas específicas do Linux.
precisa saber é o seguinte

Respostas:

259

Inicialmente: confusão

Ao escrever originalmente essa resposta, eu havia mudado recentemente do Visual Studio (com anos de experiência) para o Linux e a primeira coisa que fiz foi tentar encontrar um IDE razoável. Na época, isso era impossível: não existia um bom IDE.

Epifania: O UNIX é um IDE. Tudo isso. 1

E então percebi que o IDE no Linux é a linha de comando com suas ferramentas:

  • Primeiro você configura seu shell
  • e seu editor; escolha seu veneno - ambos são o estado da arte:

Dependendo de suas necessidades, você terá que instalar e configurar vários plugins para fazer o editor funcionar bem (essa é a parte mais irritante). Por exemplo, a maioria dos programadores no Vim se beneficiará do plugin YouCompleteMe para o preenchimento automático inteligente.

Feito isso, o shell é sua interface de comando para interagir com as várias ferramentas - Depuradores (gdb), Profilers (gprof, valgrind) etc. Você configura seu ambiente de projeto / construção usando Make , CMake , SnakeMake ou qualquer um dos vários alternativas. E você gerencia seu código com um sistema de controle de versão (a maioria das pessoas usa o Git ). Você também usa o tmux (anteriormente também tela) para multiplexar (= pensar em várias janelas / guias / painéis) e persistir na sua sessão do terminal.

O ponto é que, graças ao shell e algumas convenções de escrita de ferramentas, todos eles se integram . Dessa forma, o shell do Linux é um ambiente de desenvolvimento verdadeiramente integrado , completamente a par de outros IDEs modernos. (Isso não significa que IDEs individuais não tenham recursos que a linha de comando possa estar faltando, mas o inverso também é verdadeiro.)

Cada um com sua mania

Não posso exagerar o quão bem o fluxo de trabalho acima funciona depois que você adquire o hábito. Mas algumas pessoas simplesmente preferem editores gráficos e, nos anos desde que essa resposta foi originalmente escrita, o Linux ganhou um conjunto de excelentes IDEs gráficos para várias linguagens de programação diferentes (mas, até onde eu sei, para C ++). Tente-os mesmo que, como eu, você acabe não os usando. Aqui está apenas uma seleção pequena e tendenciosa:

Lembre-se de que esta lista está longe de estar completa.


1 Eu roubei esse título do comentário do dsm.

2 Eu costumava me referir ao Vim aqui. E embora o Vim comum ainda seja mais do que capaz, o Neovim é um reinício promissor e modernizou algumas verrugas antigas.

Konrad Rudolph
fonte
223
Eu discordo fortemente. um ide decente é importante, não importa em que você esteja trabalhando. aumenta drasticamente a produtividade. Eu uso codeblocks e acho que voltar ao VI é quase impossível. Eu codifiquei no Mac, Win e Linux e, embora eu ache o visual studio o melhor IDE, os codeblocks se aproximam.
DavidG 21/10/08
35
David, talvez você possa detalhar (própria resposta…) o que exatamente está faltando na cadeia de ferramentas que descrevi que um IDE fornece. Como eu disse, eu tenho uma sólida experiência em IDE e meu aumento de produtividade foi exatamente o inverso seu.
Konrad Rudolph
48
Que suporte de refatoração o Vim oferece? No Eclipse (que é executado no Linux), eu posso alterar o nome de qualquer método Java que eu desejar, mesmo que seja chamado em 300 lugares. Você pode fazer isso facilmente no Vim?
quant_dev
25
quant_dev: refatorar requer a análise do código fonte de alguma forma. Até onde eu sei, nenhum módulo VIM faz isso, então a resposta para sua pergunta é "nenhuma". Essa é uma das razões para preferir um IDE para linguagens centradas no IDE, como Java. Como o suporte à refatoração (etc) para C ++ é mínimo, mesmo nos IDEs, isso não se aplica ao C ++.
Konrad Rudolph
11
@ hasen: oh, mas grande parte dele pode . Renomeação com reconhecimento de escopo, por exemplo. E acredite em mim, isso é grande . E Ecplise (por exemplo) pode economizar muito trabalho aqui.
Konrad Rudolph
86

Meu favorito pessoal é o CodeLite 2.x IDE.

veja: http://www.codelite.org

A decisão de usar o CodeLite foi baseada em uma pesquisa sobre o seguinte IDE C ++ para Linux:

  • Eclipse Galileo com CDT Plugin
  • NetBeans 6.7 (que também é a base do SunStudio IDE)
  • KDevelop4
  • CodeBlocks 8.02
  • CodeLite 2.x

Afinal de contas eu decidi usar codelite 2.x .

Abaixo, listei alguns prós e contras sobre os IDEs C ++ mencionados. Observe que isso reflete apenas minha opinião pessoal!

EDIT : que pena que SOF não suporta tabelas, então eu tenho que escrever em parágrafos ...

Eclipse Galileo com CDT Plugin

Prós:

  • razoavelmente rápido
  • também suporta Java, Perl (com plugin EPIC)
  • comumente usado e bem conservado
  • também disponível para outros tipos de SO (Windows, MacOS, Solaris, AIX (?))

Contras:

  • A GUI é muito confusa e um tanto inconsistente - não muito intuitiva
  • peso pesado
  • Suporta apenas CVS (AFAIK)

NetBeans 6.7 (observe que essa também é a base do SunStudio IDE)

Prós:

  • uma das interfaces gráficas mais intuitivas que eu já vi
  • também suporta Java, Python, Ruby
  • integra CVS, SVN, Mercurial
  • comumente usado e bem conservado
  • também disponível para outros tipos de SO (Windows, MacOS, Solaris)

Contras:

  • extremamente lento
  • peso pesado
  • usa Spaces para recuo, o que não é a política do meu trabalho. Tenho certeza de que isso é configurável, mas não consegui descobrir como fazer isso

KDevelop4 (nota: não fiz muitos testes nele)

Prós:

  • comumente usado no Linux
  • integra CVS, SVN, Mercurial

Contras:

  • a GUI parece um pouco antiquada
  • peso pesado
  • muito específico para o ambiente KDE

CodeBlocks 8.02 (nota: eu não fiz muitos testes nele)

Prós:

  • razoavelmente rápido

Contras:

  • a GUI parece um pouco antiquada (embora tenha uma boa tela de inicialização)
  • as fontes no editor são muito pequenas
  • alguns ícones (por exemplo, os ícones relacionados ao depurador iniciando / pisando) são muito pequenos
  • nenhuma integração de controle de origem

CodeLite 2.x (nota: este é o meu favorito)

Prós:

  • a melhor, GUI moderna e intuitiva que eu já vi no Linux
  • leve
  • razoavelmente rápido
  • integra SVN
  • também disponível em outros tipos de SO (Windows, MacOS, Solaris (?))

Contras:

  • sem integração com o CVS (isso é importante para mim porque tenho que usá-lo no trabalho)
  • sem suporte para Java, Perl, Python (seria bom ter)
anon
fonte
14
O Eclispe tem suporte para Hg, Git, SVN e outros via plugins. E telas de inicialização / splash sugam bolas enormes. Eles sugam recursos e oferecem muito pouco benefício. E eles geralmente aparecem na frente do que eu estou trabalhando enquanto aguarda o carregamento do aplicativo. PortableApps e Eclipse precisam se livrar deles.
Chris K
4
O Codelite obteve o mesmo atalho de teclado que o Visual Studio para depuração, tornando-o muito fácil de usar para viciados em Visual.
Raoul Supercopter
Pode estar batendo um cavalo velho aqui, mas a GUI do IMO eclipse é realmente incomparável. Sim, é difícil aprender a princípio, mas é como Vi, onde a produtividade começa a disparar depois que você escala a íngreme curva de aprendizado. Para provar um ponto, tente pressionar Ctrl + 3 - um dos recursos mais impressionantes do eclipse IMO.
kizzx2
"Contras: usa Spaces para identação [...] tenho certeza que isso é configurável, mas não consegui descobrir como fazer isso." Isso mostra que você não costumava usar ferramentas, caso contrário, acabaria encontrando a opção.
Johan Boulé 20/07
5
O CodeLite é incrível, como mascar chiclete dentyne. Vai deixar um sabor fresco e menta na boca. O Eclipse, apesar de ter muitos recursos, também oferece esse vômito após o gosto quando você o usa. Eu sei que isso parece infantil, mas é realmente a melhor metáfora para explicar a "sensação" de usá-los. Tenho certeza que outros concordarão comigo.
Didier A.
75
  1. Código :: Blocos
  2. Eclipse CDT

Em breve, você descobrirá que os IDEs não são suficientes e precisará aprender a cadeia de ferramentas do GCC de qualquer maneira (o que não é difícil, pelo menos aprendendo a funcionalidade básica). Mas nenhum dano na redução da dor de transição com os IDEs, IMO.

Imran
fonte
+1 para bloqueios de código e sim, você definitivamente vai querer aprender pelo menos como compilar e executar seus programas a partir de um shell, porque o code :: blocks tem alguns defeitos.
Earlz 29/03/10
Eclipse não é de todo IMHO leve, Code :: Blocks ... apenas
rubenvb
7
-1 para blocos de código. -1 para eclipse. Ambos alteram suas interfaces de usuário durante a depuração. Até o ponto em que um usuário iniciante geralmente se sente perdido. Ambos não podem depurar fork. Ambos têm sérios problemas com a integração SVN / CVS. (O Eclipse mais recente em conjunto com o Subclipse é interrompido no Gnome a partir de 28/04/11 e trava a cada 10 minutos). Configurar o controle de origem é um pesadelo e a integração com esses IDEs é igualmente difícil.
bleepzter
4
@bleepzter -1 para usar o SVN / CVS para começar;)
OneOfOne
1
Mercurial, Git e Bazaar, que são muito superiores em todos os aspectos.
OneOfOne 4/11/11
66

Uma resposta rápida, apenas para adicionar um pouco mais de conhecimento a este tópico:
Você deve definitivamente conferir o NetBeans . O Netbeans 6.7 possui os seguintes recursos:

  • Projetos e modelos C / C ++: Suporta destaque de sintaxe, preenchimento automático de código, recuo automático.
  • Possui um depurador C / C ++
  • Oferece suporte a configurações do compilador, gerenciador de configuração e suporte a Makefile (com um assistente).
  • Possui uma janela de classes, uma janela de usos e uma janela de navegação de arquivos (ou painel).
  • Uma visão de expansão Macro e também dicas de ferramentas .
  • Suporte para desenvolvimento de QT .

Eu acho que é uma substituição perfeita (e muito melhor) do Visual Studio e uma ferramenta muito boa para aprender C / C ++.

Boa sorte!

ramayac
fonte
2
Também é muito bom para c ++. Ele tem o melhor analisador de idiomas de todos os tempos.
Johan Boulé 20/07
1
Gostei do Netbeans muito mais que o Eclipse no desenvolvimento de c ++.
Thomas Langston
9
O NetBeans é muito mais agradável que o Eclipse. Eu realmente desejo que mais pessoas comecem a perceber isso.
Didier A.
1
Depois de lutar com o Eclipse por semanas, encontrei isso, mudei para o NetBeans e obrigado! Possui uma interface mais agradável, é mais ágil, intuitiva e personalizável. Beats Eclipse mãos para baixo
Frederik
1
Outra votação aqui para ver como o NetBeans é melhor que o Eclipse. Ele também tem de longe a melhor emulação Vim (como um plugin) que eu já usei.
thoughton
52

Pelo menos para projetos específicos do Qt , o Qt Creator (da Nokia / Trolltech / Digia) mostra uma grande promessa.

Henrik Hartz
fonte
10
Eu também o uso para projetos que não são Qt.
Chance
É legal. Eu tentei e gosto muito.
Tyler Longo
32

você poderia esclarecer um pouco mais como era para você, o que precisava mudar. Talvez você possa me indicar a direção certa, fornecendo alguns links para as informações que você usou.

Minha primeira fonte foram, na verdade, as manpáginas das ferramentas . Apenas digite

$ man toolname

na linha de comando ( $aqui faz parte do prompt, não da entrada).

Dependendo da plataforma, eles são bem escritos e também podem ser encontrados na internet. No caso de make, eu realmente li a documentação completa que levou algumas horas. Na verdade, não acho que isso seja necessário ou útil na maioria dos casos, mas tive alguns requisitos especiais em minhas primeiras atribuições no Linux que exigiram um sofisticado makefile. Depois de escrever o makefile, entreguei a um colega experiente que fez alguns pequenos ajustes e correções. Depois disso, eu praticamente sabia make.

Eu usei o GVIM porque tinha alguma experiência anterior (mas não muita) lá, não posso dizer nada sobre o Emacs ou alternativas. Acho que realmente ajuda a ler o .gvimrcarquivo de configuração de outras pessoas . Muitas pessoas colocam na web. Aqui está o meu .

Não tente dominar todos os binutils de uma vez, pois há muitas funções. Mas obtenha uma visão geral para saber onde procurar quando precisar de algo no futuro. No entanto, você deve conhecer todos os parâmetros importantes para g++e ld(a ferramenta de vinculação do GCC que é chamada automaticamente, exceto quando explicitamente impedida).

Também estou curioso, você tem a conclusão do código e a sintaxe destacada quando você codifica?

Destaque de sintaxe: sim, e muito melhor que o Visual Studio. Conclusão de código: sim- ish . Primeiro, devo admitir que não usei a conclusão do código C ++, mesmo no Visual Studio, porque (comparado ao VB e C #) não era bom o suficiente. Eu não o uso com frequência agora, mas, no entanto, o GVIM tem suporte nativo de conclusão de código para C ++. Combinado com a biblioteca ctags e uma lista de tags do tipo plug-in, isso é quase um IDE.

Na verdade, o que me levou a começar foi um artigo de Armin Ronacher. Antes de ler o texto, veja as capturas de tela no final!

você precisa compilar primeiro antes de obter erros (sintaxe)?

Sim. Mas é o mesmo para o Visual Studio, não é (nunca usei o Tomate Inteiro)? Obviamente, o destaque da sintaxe mostrará colchetes não correspondentes, mas isso é tudo.

e como você depura (novamente pense em pontos de interrupção etc)?

Eu uso o gdbque é uma ferramenta de linha de comando. Há também um frontend gráfico chamado DDD. gdbé uma ferramenta de depuração moderna e pode fazer tudo o que você pode fazer em um IDE. A única coisa que realmente me irrita é ler um rastreamento de pilha porque as linhas não são recuadas ou formatadas, por isso é realmente difícil digitalizar as informações quando você está usando muitos modelos (o que eu faço). Mas esses também interferem no rastreamento de pilha nos IDEs.

Como eu disse, tive o "prazer" de definir meus primeiros passos na linguagem de programação Java usando o bloco de notas do Windows e o compilador java de linha de comando no ensino médio, e foi ... bem, um pesadelo! certamente quando eu poderia compará-lo com outros cursos de programação que eu tinha naquela época, onde tínhamos IDE decentes

Você nem deveria tentar comparar um editor moderno e completo, como o Emacs ou o GVIM, com o Bloco de Notas. O bloco de notas é um TextBoxcontrole embelezado , e isso realmente faz toda a diferença. Além disso, trabalhar na linha de comando é uma experiência muito diferente no Linux e Windows. O Windows cmd.exeestá severamente aleijado. O PowerShell é muito melhor.

/ EDIT: Devo mencionar explicitamente que o GVIM possui edição com guias (como na navegação por guias, não em espaços versus tabulações)! Levei séculos para encontrá-los, embora não estejam escondidos. Basta digitar em :tabevez de simples :eao abrir um arquivo ou criar um novo e o GVIM criará uma nova guia. A alternância entre guias pode ser feita usando o cursor ou vários atalhos diferentes (dependendo da plataforma). A chave gt(tipo g, então tno modo de comando) deve funcionar em qualquer lugar e passa para a próxima guia ou número da guia. n se um número foi fornecido. Digite :help gtpara obter mais ajuda.

Konrad Rudolph
fonte
@confuzatron: Não, eu uso o gdb por várias razões. Mais importante, eu geralmente trabalho sem nenhum servidor X em execução. Além disso, estou um pouco desconfortável com o fato de que o DDD não vê nenhuma atualização há muito tempo. Por outro lado, a propriedade do projeto acabou de mudar e parece haver mudanças em andamento.
Konrad Rudolph
Obrigado pela informação guia wrt gvim, nunca mais novo que :)
Letholdrus
O VS2010 destaca erros de sintaxe sem compilação.
Candy Chiu
@Candy true, o VS2010 mudou muitas coisas nesse sentido e adicionou recursos avançados para compilação em segundo plano. Mas o gvim também adicionou muitos recursos por meio de plugins. Em particular, você provavelmente pode obter o erro de sintaxe destacado sem compilação através do clang_completeplug-in agora. Esta resposta é de 2009 e algumas partes estão desatualizadas. Mas houve melhorias por todos os lados, por isso mais ou menos se equilibra.
Konrad Rudolph
25

Para não repetir uma resposta, mas acho que posso adicionar um pouco mais.

O Slickedit é um excelente IDE.

Ele suporta bem grandes bases de código, sem diminuir a velocidade ou gastar todo o tempo indexado. (Este é um problema que tive com o cdt do eclipse). A velocidade do Slickedit é provavelmente a coisa mais legal, na verdade.
A conclusão do código funciona bem e há uma grande quantidade de opções para formatação automática, embelezamento e refatoração.
Possui depuração integrada.
Possui suporte a plug-ins e comunidade bastante ativa para criá-los.
Em teoria, você deve ser capaz de se integrar bem com as pessoas que fazem o material de makefile tradicional, pois permite criar um projeto diretamente a partir de um, mas isso não funcionou tão bem quanto eu gostaria quando o experimentei.
Além do Linux, existem versões para Mac e Windows, caso você precise.

rck
fonte
23

Como um cara antigo do UNIX, eu sempre uso o Emacs. Mas isso tem uma curva de aprendizado bastante íngreme e longa, então não tenho certeza se posso recomendá-lo aos recém-chegados.

Realmente não existe um IDE "bom" para Linux. O Eclipse não é muito bom para C / C ++ (o CDT está melhorando, mas ainda não é muito útil). Os outros estão ausentes de todos os recursos que você procura.

É realmente importante aprender como todas as ferramentas individuais (gcc, make, gdb etc.) funcionam. Depois de fazer isso, você pode achar a maneira do Visual Studio de fazer as coisas muito limitadora.

Kristopher Johnson
fonte
Eclipse CDT "ainda não é muito útil?" A elaboração seria útil. Acho extremamente útil (e fácil de usar).
John Zwinck 23/11/2009
"ainda não é muito útil": o preenchimento automático geralmente não funciona, navegar para declarações ou usos de funções não funciona, o destaque da sintaxe nem sempre funciona, a refatoração não funciona etc. É um pouco melhor do que usar o vi. A interface do usuário do GDB é a única coisa que vale a pena usar, IMHO.
Kristopher Johnson
Eu realmente não tentei refatorar com o CDT, mas as outras coisas parecem funcionar. Observarei que executo o Eclipse com alguns parâmetros de configuração de uso máximo de memória bastante grandes (tenho 8 a 12 GB de RAM), mas parece bom.
John Zwinck 24/11/2009
Na última vez que experimentei o Eclipse CDT, o analisador de sintaxe / semântica para o preenchimento automático fez o IDE congelar por 8 segundos toda vez que foi chamado. Isso tornou todo o recurso inútil. Não acredito que a coisa não funcionou em seu próprio segmento. Isso foi há dois anos, então espero que seja corrigido agora. (certo?)
Acho o CDT incrível para minhas incursões no QT e no Boost. Nas janelas com Mingw, há problemas, mas em um ambiente Posix adequado, o preenchimento automático funciona muito bem! A navegação para as declarações é realmente o único buraco evidente. Mas, considerando que o C ++ pode ter várias declarações idênticas, não estou surpreso. Esse é um problema mais difícil de resolver do que em Java.
Chris K
18

O Checkout Netbeans, está escrito em Java, para que você tenha o mesmo ambiente, independentemente do seu sistema operacional, e suporta muito mais do que apenas C ++.

Não vou tentar convencê-lo, porque acho que os IDEs podem ser uma escolha muito pessoal. Para mim, melhora minha produtividade sendo rápido, suportando os idiomas em que codifico e possui os recursos padrão que você esperaria de um IDE.

Steve M
fonte
5
Só posso adicionar meu +1 a isso. O netbeans tem o melhor analisador de linguagem c ++ que eu já vi em uma ide; bate o cdt do eclipse.
Johan Boulé 20/07
18

Apenas um acompanhamento rápido para esta pergunta ...

Faz um mês desde que comecei a usar o Vim como minha principal ferramenta 'GUI' para programar C ++ no Linux. No começo, a curva de aprendizado era realmente um pouco íngreme, mas depois de um tempo e com as opções certas ativadas e os scripts em execução, eu realmente entendi!

Adoro a maneira como você pode moldar o Vim para atender às suas necessidades; basta adicionar / alterar os mapeamentos de teclas e o Vim se transforma em um 'IDE' altamente produtivo.

A cadeia de ferramentas para criar e compilar um programa C ++ no Linux também é realmente intuitiva. make e g ++ são as ferramentas que você usará.

O depurador ddd, no entanto, não é realmente tão bom, mas talvez seja porque eu não tive tempo para dominá-lo corretamente.

Portanto, para qualquer um que esteja procurando um bom IDE C ++ no Linux, como eu, sua melhor aposta é com as ferramentas padrão disponíveis no próprio Linux (Vim, g ++, ddd) e você realmente deve pelo menos tentar usar eles, antes de procurar outra coisa ...

Por último, mas não menos importante, eu realmente quero agradecer ao konrad por sua resposta aqui. Isso realmente me ajudou a encontrar o meu caminho no ambiente de desenvolvimento Linux, obrigado!

Também não estou fechando esta pergunta, para que as pessoas ainda possam reagir ou até mesmo adicionar novas sugestões ou adições às respostas já muito boas ...

sven
fonte
Você consegue que os recursos do IntelliSense-ish funcionem nas ctags do Vim +? Não é apenas apenas o preenchimento automático, mas informações sensíveis ao contexto, como lista de parâmetros para função etc.?
kizzx2
@ kizzx2: Sim , não são muitas opções .
precisa saber é o seguinte
12

A resposta mais curta é: escolhendo o "editor" desejado e use o console do GDB ou um simples front end do GDB para depurar seu aplicativo. Os depuradores vêm com IDEs sofisticados, como o Netbeans, que suga C / C ++. Eu uso o Netbeans como meu editor e o Insight e o console GDB como meu depurador.

Com informações, você tem uma boa interface gráfica e o poder bruto do GDB.

Assim que você se acostumar com os comandos do GDB, você começará a amá-lo, pois poderá fazer coisas que nunca poderá fazer usando uma GUI. Você pode usar até Python como sua linguagem de script se estiver usando o GDB 7 ou uma versão mais recente.

A maioria das pessoas aqui prestou mais atenção aos "editores" dos IDEs. No entanto, se você estiver desenvolvendo um grande projeto em C / C ++, poderá gastar mais de 70% do seu tempo com facilidade nos "depuradores". Os depuradores dos IDEs extravagantes estão pelo menos 10 anos atras do Visual Studio. Por exemplo, o Netbenas possui interfaces muito semelhantes ao Visual Studio. Mas seu depurador tem várias desvantagens em comparação com o Visual Studio.

  1. Muito lento para exibir até mesmo uma matriz com apenas algumas centenas de elementos
  2. Sem destaque para o valor alterado (por padrão, o visual studio mostra os valores alterados nas janelas de exibição em vermelho)
  3. Capacidade muito limitada de mostrar memória.
  4. Você não pode modificar o código-fonte e continuar executando. Se um erro levar muito tempo para ocorrer, você deseja alterar a fonte e aplicar as alterações ao vivo e continuar executando o aplicativo.
  5. Você não pode alterar a "próxima instrução" para executar. No Visual Studio, você pode usar "Definir próxima instrução" para alterar como o aplicativo é executado. Embora esse recurso possa travar seu aplicativo se não for usado corretamente, ele economizará muito tempo. Por exemplo, se você achou que o estado do seu aplicativo não está correto, mas não sabe o que causou os problemas, convém executar novamente uma determinada região dos códigos-fonte sem reiniciar o aplicativo.
  6. Não há suporte embutido para STL, como vetor, lista, deque e mapa etc.
  7. Sem pontos de observação. Você precisa desse recurso quando parar o aplicativo no momento em que uma variável é alterada. Os computadores baseados na Intel têm pontos de controle de hardware para que eles não desacelerem o sistema. Pode levar muitas horas para encontrar alguns erros difíceis de encontrar sem usar pontos de controle. "Visual Studio" chama "relógio ponteiro" como "Data BreakPoint".

A lista pode demorar muito mais.

Fiquei tão frustrado com as desvantagens do Netbeans ou de outros IDEs similares, de modo que comecei a aprender o GDB. Eu descobri que o próprio GDB é muito poderoso. O GDB não possui todas as "desvantagens" mencionadas acima. Na verdade, o GDB é muito poderoso, é ainda melhor que o Visual Studio de várias maneiras. Aqui, apenas mostro um exemplo muito simples.

Por exemplo, você tem uma matriz como:

struct IdAndValue
{
  int ID;
  int value;
};


IdAndValue IdAndValues[1000];

Quando seu aplicativo é interrompido e você deseja examinar os dados em IdAndValues. Por exemplo, se você deseja encontrar os ordinais e os valores na matriz para um "ID" específico, é possível criar um script como o seguinte:

define PrintVal 
set $i=0
printf "ID = %d\n", $arg0
while $i<1000
  if IdAndValues[$i].ID == $arg0
    printf "ordinal = %d, value = %d\n", $i, IdAndValues[$i].vaue
    set $i++
  end
end
end

Você pode usar todas as variáveis ​​em sua aplicação no contexto atual, suas próprias variáveis ​​(no nosso exemplo, é $ i), argumentos passados ​​(no nosso exemplo, é $ arg0) e todos os comandos do GDB (interno ou definido pelo usuário) )

Use o PrintVal 1 do prompt do GDB para imprimir valores para o ID "1"

A propósito, o NetBeans vem com um console GDB, mas, usando o console, você pode travar o Netbeans. E acredito que é por isso que o console está oculto por padrão no NetBeans

Charles Zhang
fonte
Bom ponto. Infelizmente, o GDB tem uma curva de aprendizado extremamente acentuada. Eu o uso há anos e ainda nunca usei macros e (embora eu saiba que isso seja possível através de macros!) Qualquer código STL que eu lance nele não pode ser depurado melhor do que nos IDEs modernos.
Konrad Rudolph
Passei 2 dias para dominar a maioria dos comandos no GDB. Depois de conhecer o poder bruto do GBD, você nunca mais olhará para trás. Isso poupará muito tempo ao corrigir os erros difíceis de encontrar.
Charles Zhang
11

Eu estou usando o " Geany " encontrado bom até agora, seu IDE rápido e leve.

Entre os recursos de Geany estão :

  • Dobragem de código
  • Salvar sessão
  • Recursos básicos do IDE, como realce de sintaxe, guias, recuo automático e conclusão de código
  • Gerenciamento simples de projetos
  • Sistema de compilação
  • Seletor de cores (surpreendentemente útil durante o desenvolvimento da web)
  • Emulação de terminal incorporado
  • Dicas de chamada
  • Listas de símbolos
  • Preenchimento automático de construções comuns (como se, mais, enquanto, etc.)
TheCottonSilk
fonte
10

Se você gosta do Eclipse para Java, sugiro o Eclipse CDT. Embora o suporte ao C / C ++ não seja tão poderoso quanto o Java, ele ainda oferece a maioria dos recursos. Ele possui um recurso interessante chamado Projeto Gerenciado que facilita o trabalho com projetos C / C ++ se você não tiver experiência com Makefiles. Mas você ainda pode usar Makefiles. Eu faço codificação C e Java e estou muito feliz com o CDT. Estou desenvolvendo o firmware para um dispositivo incorporado em C e um aplicativo em Java que fala com esse dispositivo, e é muito bom usar o mesmo ambiente para ambos. Eu acho que provavelmente me torna mais produtivo.

jassuncao
fonte
9

Eu amo como as pessoas perdem completamente a solicitação na pergunta original para um IDE. Linux não é um IDE. Isso não é o que essas palavras significam. Aprendi c e c ++ usando vi e gcc e make, e não estou dizendo que elas não são ferramentas adequadas, mas NÃO são uma IDE. Mesmo se você usar ferramentas mais elaboradas, como vim ou emacs ou qualquer editor sofisticado que desejar, digitar comandos em uma linha de comando não é um IDE.

Além disso, todos vocês sabem que o make existe como parte do visual studio, certo? A idéia de que um IDE esteja "limitando" é tola se você puder usá-lo para acelerar algumas coisas, mas ainda assim poderá recorrer às coisas da linha de comando quando necessário.

Tudo isso dito, eu sugiro, como vários acima, tentando blocos de código. Ele possui destaque de código decente, uma maneira bastante fácil de criar um projeto, codificá-lo, executá-lo etc., que é o núcleo de um IDE real e parece bastante estável. Depurar é uma porcaria ... Nunca vi um depurador interativo decente em nenhuma variante linux / unix. GDB não é isso. Se você está acostumado à depuração no estilo visual studio, está quase sem sorte.

Enfim, eu vou arrumar minhas coisas, eu sei que a multidão de linux que vê apenas uma vista vai gritar isso e me expulsar da cidade em pouco tempo.

SomeGuy
fonte
Você tem um ponto. Não é um IDE como o conhecemos. No entanto, é interessante que o OP tenha votado nessa resposta! Pregando minhas cores no mastro: sou fã de makefiles de linha de comando.
precisa
Finalmente alguém que tem algum cérebro ... Acho que os outros apenas codificam coisas triviais, se podem fazer tudo com o emacs / vim.
Pippo
8

make + vim + gdb = um ótimo IDE

Matt Fichman
fonte
7

Eu gosto bastante do IDE do Ultimate ++ . Ele possui alguns recursos que foram projetados para uso com sua própria biblioteca (que, BTW, é um bom kit de ferramentas, se você não deseja comprar no GTK + ou no QT), mas funciona perfeitamente com projetos gerais de C ++. Ele fornece conclusão de código decente, boa coloração de sintaxe, depuração integrada e todos os outros recursos que os IDEs mais modernos oferecem.

dguaraglia
fonte
Uau! Quanto às capturas de tela que realmente parecem incríveis! Definitivamente vou tentar. Você sabe se eu tenho que pagar por isso? (Isso não é muito claro no site do Ultimate ++)
Não, é grátis como em "discurso", "cerveja" e "passeio". Eles são ainda bastante aberta sobre a aceitação de patches e liberar muitas vezes, por isso é como código aberto quanto ele ganha :)
dguaraglia
7

Eu realmente sugiro codeblocks . Não é tão pesado quanto o Eclipse e possui suporte ao projeto do Visual Studio.

DavidG
fonte
6

Talvez o Projeto Ferramentas Linux para Eclipse possa atender às suas necessidades?

O projeto Linux Tools visa trazer um IDE C e C ++ completo para os desenvolvedores do Linux. Desenvolvemos os recursos de edição e depuração do CDT e integramos ferramentas populares de desenvolvimento nativo, como as ferramentas automáticas GNU, Valgrind, OProfile, RPM, SystemTap, GCov, GProf, LTTng, etc. Os projetos atuais incluem visualizadores e analisadores de traços LTTng, Editor RPM .spec, Autotools constrói integração, uma ferramenta de análise de uso de heap Valgrind e ferramentas de perfil de chamada OProfile.

Jean Hominal
fonte
6

No Linux, existem muitos IDEs:

Na minha experiência, os mais valiosos são o Eclipse e o Qt Creator . Ambos fornecem todos os recursos "padrão" (por exemplo, preenchimento automático, realce de sintaxe, depurador, integração com git). Vale ressaltar que o Eclipse também fornece funcionalidades de refatoração, enquanto o Qt Creator fornece integração com o Valgrind e suporte para implementação em destinos remotos.

Além disso, o CLion IDE comercial parece muito bom (mas não o usei extensivamente).

Claudio
fonte
5

Ouvi dizer que Anjuta é bastante liso para os usuários do Gnome. Eu brinquei um pouco com o KDevelop e é legal, mas meio que falta de recursos. O Code :: Blocks também é muito promissor, e eu gosto mais disso.

wvdschel
fonte
5

O Sun Studio versão 12 é um download gratuito (suporte gratuito e pago disponível) - http://developers.sun.com/sunstudio/downloads/thankyou.jsp?submit=%A0FREE+Download%A0%BB%A0 .

Tenho certeza de que você possui suporte à conclusão e depuração de código, incluindo suporte a plug-ins neste IDE.

O Sun Studio está disponível para Linux e Solaris. fóruns: http://developers.sun.com/sunstudio/community/forums/index.jsp . Fóruns do Sun Studio Linux: http://forum.sun.com/forum.jspa?forumID=855

Ficarei ansioso para ouvir seus comentários sobre esta ferramenta.

BR,
~ A

anjanb
fonte
5

Eu já usei o Ultimate ++ IDE e é bastante bom.

Hernán
fonte
5

E então notei que simplesmente não é assim que você trabalha lá *, e joguei tudo fora, passei alguns dias lendo manuais, configurei meu shell (bash), configurei um ambiente GVIM, aprendi a cadeia de ferramentas GCC / binutils, make e gdb e viveu feliz para sempre.

Eu concordo principalmente, mas o problema também é de percepção: esquecemos o quão difícil foi se tornar produtivo em qualquer IDE (ou outro ambiente) escolhido. Acho os IDE (Visual Studio, NetBeans, Eclipse) surpreendentemente pesados ​​de várias maneiras.

Como um cara antigo do UNIX, eu sempre uso o Emacs. Mas isso tem uma curva de aprendizado bastante íngreme e longa, então não tenho certeza se posso recomendá-lo aos recém-chegados.

Eu segundo isso; use o Emacs como meu editor principal no Linux e no MSW (XP2, W2K). Eu discordo que ele possui uma curva de aprendizado acentuada , mas diria que, devido ao grande número de recursos, ele possui uma longa curva de aprendizado. Você pode ser produtivo em pouco tempo, mas, se quiser, poderá aprender novos recursos nos próximos anos.

No entanto - não espere que todos os recursos do Emacs estejam disponíveis nos menus suspensos; há muita funcionalidade para encontrá-lo lá.

Como eu disse, usei o GNU Emacs no MSW por anos. E sempre funcionou bem com o Visual Studio até que eu "atualizei" para 2008; agora, às vezes, atrasa muitos segundos antes de atualizar os arquivos do disco. O principal motivo da edição na janela do VS é o recurso de conclusão de código "Intellisense".

NVRAM
fonte
5

Embora eu use o Vim, alguns de meus colegas de trabalho usam o SlickEdit, que parece muito bom. Não tenho certeza sobre a depuração integrada porque não conseguiríamos fazer isso em nosso projeto específico.

O SlickEdit tem um bom suporte para navegar em grandes bases de código, com referência cruzada e salto de tags. É claro que ele também possui coisas básicas, como destaque de sintaxe e conclusão de código.

Greg Hewgill
fonte
5

Eu uso o Eclipse CDT e o Qt Creator (para aplicativos Qt).

Essas são as minhas preferências. É uma pergunta muito sugestiva e existem tantas respostas quanto desenvolvedores. :)

Etienne Savard
fonte
4

SlickEdit. Eu uso e adoro o SlickEdit desde 2005, no Windows e no Linux. Também tenho experiência em trabalhar no Visual Studio (5, 6, 2003, 2005) e apenas com Emacs e linha de comando. Eu uso o SlickEdit com makefiles externos, alguns dos meus colegas de equipe usam o SlickEdit, outros usam o Emacs / vi. Não uso o depurador integrado, o controle de versão integrado e o sistema de compilação integrado: geralmente considero muita integração uma verdadeira dor. O SlickEdit é robusto (com poucos bugs), rápido e intuitivo. É como um carro alemão, um carro de motorista.

As versões mais recentes do SlickEdit parecem oferecer muitos recursos que não me interessam, estou um pouco preocupado que o produto fique inchado e diluído no futuro. Por enquanto (eu uso a V13.0) é ótimo.

Radim Cernej
fonte
3

Para mim, o Ultimate ++ parece ser a melhor solução para escrever um programa cross-os

IonLupascu
fonte
3

Se você estava usando o vim por um longo tempo, deveria fazer isso como seu IDE. Existem muitos addons disponíveis. Eu achei várias delas bastante úteis e compilei aqui, dê uma olhada.

E muito mais na série de dicas e truques do vi / vim por lá.

o geek
fonte