Procurando idéias sobre como configurar um ambiente de desenvolvimento conveniente e produtivo para o desenvolvimento em C. Achei a edição C com o Vim muito útil, mas gostaria de obter uma amostra mais ampla de sugestões.
Procurando idéias sobre como configurar um ambiente de desenvolvimento conveniente e produtivo para o desenvolvimento em C. Achei a edição C com o Vim muito útil, mas gostaria de obter uma amostra mais ampla de sugestões.
Respostas:
Emacs / Vim / Eclipse / ... - Pessoalmente, sou um usuário do Emacs. Se você achar que as seqüências de controle cansam seu dedo mindinho, basta usar o modo Viper. O Emacs é tão bem integrado ao unix, facilitando o controle de tudo em um só lugar. O Vim também faz um bom trabalho aqui, mas acho o Elisp uma linguagem de extensão muito mais poderosa que o Vim Script. Pode-se conversar por horas sobre todas as maneiras de configurar o Emacs para o desenvolvimento em C. O Modo Flymake foi mencionado e é um super começo para as coisas. Eu não estou familiarizado com o Eclipse, não acho que ele deixe espaço suficiente na minha tela para código, nem gosto de como está inchado (os usuários do Vim dirão o mesmo sobre o Emacs). Também sou injustamente inclinado contra qualquer coisa escrita em Java, por razões puramente estéticas.
Ctags - marca suas funções C (ou muitas outras linguagens) para que o Vim, o Emacs ou qualquer outra coisa possa fazer um pouco de hipertexto nos seus arquivos. Diga que você está andando por aí, vê uma função e está coçando a cabeça, dizendo "O que isso faz de novo? A nomeação é um pouco vaga". Plink-plank-plunk, você pode ir direto à sua definição.
Cmake / Gnu-Autotools - Make é ótimo, mas em algum momento você precisa abstrair um pouco as coisas para que seu projeto possa se desenvolver em todos os tipos de sistemas que você não tem como testar. Se você precisa apenas de pessoas para criar seu código em um * nix, o Autotools é ótimo, mas, realmente, você deve se familiarizar com o Cmake de qualquer maneira. A equipe do Cmake cria código em todas as configurações possíveis e garante que você não precise passar pela dor de cabeça. Se você deseja que seu projeto seja facilmente adquirido e compre outros, uma dessas ferramentas é crucial.
Git / Mercurial / Subversion / ... - Você pode passar meses pesquisando o software de controle de versão, mas provavelmente deve usar o Git. É sólido, é distribuído, o @ $! #% & Linux Kernel é rastreado com ele. Se for bom o suficiente para Linus, deve ser bom o suficiente para você. Também ouço coisas boas sobre o Mercurial, aparentemente a G ** gle as usa, então provavelmente não é ruim. Algumas pessoas parecem gostar do Subversion e CVS e outros enfeites. Não gosto deles porque são monolíticos, o que para mim é muito inconveniente e limitante.
Stumpwm / wmii / XMonad / ... - Em algum momento você perceberá que qualquer coisa que você possa fazer para manter seu trabalho fluindo melhorará bastante sua produção. Uma das melhores maneiras de impedir que o seu cérebro rompa seu contexto é mudar para o lado a lado, gerenciadores de janelas do KEYBOARD DRIVEN. Sou fã pessoal do StumpWM , o Emacs dos gerenciadores de janelas. Totalmente implementado em um processo Common Lisp personalizável on-the-fly, qualquer coisa que você se encontra fazendo repetidamente pode ser banida em funções e vinculada a comandos. Coisas boas. Não sei muito sobre nenhum dos outros, mas talvez seja melhor deixar mais elaboração para outra discussão. USE O TECLADO QUANTO POSSÍVEL.
GDB - Não estou familiarizado com outros depuradores, mas esse parece ser o padrão de fato.
Valgrind - Não sei de mais nada que faça o que isso faz tão bem. O Valgrind é crucial para todas aquelas buscas de perfis / vazamentos de memória que você deseja continuar. Você simplesmente não pode escrever código com malloc / calloc sem o Valgrind.
Eu persisti com o Vim por um tempo, vale a pena conhecer o básico do VIM, pois você sempre encontrará uma caixa UNIX em algum lugar que só possui isso, mas tentei o Emacs e não olhei para trás. Eclipse é uma alternativa 'moderna', tenho todos os três no meu sistema!
É uma preferência muito pessoal, então acho que não posso fazer muito mais do que dizer o que uso. Eu tenho o Emacs configurado com o modo Flymake , que periodicamente compila o arquivo em que você está trabalhando e analisa a saída do compilador para descobrir quais erros você fez. Destaca os erros / avisos no buffer e mostra a mensagem de erro do compilador associada
Se você está desenvolvendo C em Unix / Linux, é absolutamente necessário usar o Cscope se o projeto for de tamanho significativo.
O Cscope é uma ferramenta do desenvolvedor para navegar pelo código-fonte - pule para foobar
a definição de função , encontre todos os locais onde a variável foo
é referenciada, encontre todos os arquivos bar.h
, inclusive , altere todas as ocorrências de bar
into baz
etc.
Além disso, você mencionou o Vim em seu post ... aqui está um tutorial sobre como usar o Vim e o Cscope juntos.
Você pode usar o pacote Netbeans C / C ++ que funciona com o G ++ / GCC:
Eu edito C com o Vim no console. Emprego makefiles e tenho vários compiladores para testar meu código, incluindo gcc, clang (LLVM) e icc. Outras coisas que considero parte do meu ambiente de desenvolvimento: o uso de grep, depuradores e valgrind. Uma linguagem de script para compilações mais complicadas. Git para controle de versão.
Mais importante em minha mente do que o que você usa para editar o código é como você o estrutura. Como explicar isso é provavelmente uma pergunta para o estouro de pilha, mas, como você pediu, geralmente tenho um diretório separado para o código do objeto, não para distribuição e outra pasta para o (s) binários resultantes. Eu tenho uma pasta de teste que contém mais arquivos C que usam todo o código genérico que estou escrevendo e esses são validados, junto com o arquivo final do projeto.
Eu uso o gedit com terminal incorporado.