Pular para o conteúdo

C - Include e Makefile

Este artigo tem o objetivo de explicar e orientar o uso da diretiva include e do uso de Makefile em seus projetos. Suponho que você tenha um pouco (não precisa ser muito) de conhecimento em C e saiba usar o compilador gcc sobre o GNU/Linux.
Gilzamir Ferreira Gomes kaos666
Hits: 101.195 Categoria: C/C++ Subcategoria: Miscelânea
  • Indicar
  • Impressora
  • Denunciar

Parte 3: Conclusão

Para o exemplo dado, o exemplo de uso de arquivos Makefile é muito simples. No entanto, para projetos grandes e sérios, a complexidade é muito grande e torna-se necessário uma ferramenta (diga-se software ou programa) que auxilie na criação dos Makefiles. Num mesmo projeto podem haver vários Makefiles. Makefiles para projetos criados no KDevelop são criados automaticamente e à medida que você adiciona arquivos ao projeto. Mas vale à pena ter uma noção geral de como o negócio funciona.

Outra vantagem do uso do make que não foi mencionada nas páginas anteriores foi a seguinte: imagina um projeto imenso (um jogo por exemplo) em que o processo de compilação demora horas. Se modificações em um arquivo forçasse a compilação completa do programa, perderíamos muito tempo. Com o uso do make torna-se fácil compilar apenas o que foi modificado e suas dependências (ou regras), reduzindo bastante o tempo de compilação.

Só lembrando que C ainda é uma linguagem muito utilizada para a criação de programas de sistema, como compiladores. Apesar de não ser orientada à objetos, ainda é muito importante estudar a linguagem C (e C++ quando possível). Outras linguagens que eu uso e aconselho são:
  • C++;
  • C# (com Mono);
  • e Java.

IDES Para as linguagens mencionadas:
  • KDevelop (geralmente é instalada junto com o KDE): C, C++, Java e muitas outras;
  • Monodevelop: serve para qualquer linguagem suportada pelo Mono, como C#, Java e VB .NET. Site: http://www.monodevelop.com;
  • Eclipse: com um plugin adequado, qualquer linguagem pode ser usada nesta IDE. Site: http://www.eclipse.org;
  • X-Develop: suporta C#, Java, C++ e outras linguagens suportadas pelo Mono e/ou .NET. Site: http://www.x-develop.com.

   1. A diretiva include
   2. Criando um Makefile para o exemplo apresentado
   3. Conclusão

Mono e C# (parte 1)

Mono - Por que usá-lo?

Ser livre, mas manter padrões

Mono e C# (parte 2)

Criando um sistema operacional com ASM e C++

Criação e uso de um interpretador de script BrainFuck em C++

Utilizando a biblioteca NCURSES - Parte I

Apreendendo a utilizar o GNU Debugger (parte 2)

Programando em Qt

#1 Comentário enviado por agk em 19/04/2005 - 16:40h
Legal o artigo, parabéns, pena que não entendo nada de C e não consegui nem sequer fazer funcionar esse pequenos exemplos.
#2 Comentário enviado por goajunior em 20/04/2005 - 12:21h
Legal o artigo, parabéns, uma pergunta, supondo que o objeto metodos.o já esteja compilado e eu não quero recompilá-lo, apenas quero inserí-lo no objeto do meu programa, como eu faço isso no Makefile ?
#3 Comentário enviado por kaos666 em 21/04/2005 - 00:06h
você não precisa fazer nada, o make faz isso para você.
#4 Comentário enviado por kernel_sys em 10/10/2005 - 13:38h
Legal o artigo parabens
#5 Comentário enviado por italo em 14/03/2008 - 20:28h
Fui brincar com o Makefile e surgiu uma duvida ou bug sei la. fiz um pequeno programa em c, com apenas um printf e uma chamada ao sistema.

#include <stdio.h>

int main(){
printf("Entrando na net!\n");
system("firefox uol.com.br");
return 0;
}

e escrevi meu Makefile:
net:
gcc net.c -o net
rodei a 1 vez e deu td blza. Entaum resolvi adicionar mais uma linha no main
system("ls -a");

salvei. rodei o make e ele disse que meu programa ja tava atualizado "up-date" e quando rodei ele rodou a versao antiga, sem a chamada
system("ls -a");

pq??? sera que ele naum consegui identificar que o arq foi modificado?? ou deixei de explicitar alguma coisa no Makefile???

quem quiser mandar a resposta via e-mail: soutoitalo [at] gmail.com
#6 Comentário enviado por delmarcs em 15/09/2009 - 11:14h
Excelente artigo.

Contribuir com comentário

Entre na sua conta para comentar.