Makefile

Iniciado por hulkPT, 09 de Fevereiro de 2010, 12:55

tópico anterior - próximo tópico

hulkPT


Boa tarde, gostaria de saber se é possivel criar duas makefiles na mesma pasta. Isto é eu tenho ficheiros que sao usados pelo servidor.c(aqui encontra se uma main) e pelo cliente.c(aqui encontra se uma main).

crc.c é usado por ambos os main's é um codigo muito bom para quem anda a procura de um codigo de CRC

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "crc.h"

#define poly 0x04c11db7L


word32 chksum_crc32 (char *block, unsigned int length) //calcular crc32
{
   register unsigned long crc;
   unsigned long i;

   crc = 0xFFFFFFFF;
   for (i = 0; i < length; i++)
   {
      crc = ((crc >> 8) & 0x00FFFFFF) ^ crc_tab[(crc ^ *block++) & 0xFF];
   }
   return (crc ^ 0xFFFFFFFF);
}


void chksum_crc32gentab () // gerar tabela
{
   unsigned long crc;
   int i, j;

 
   for (i = 0; i < 256; i++)
   {
      crc = i;
      for (j = 8; j > 0; j--)
      {
if (crc & 1)
{
    crc = (crc >> 1) ^ poly;
}
else
{
    crc >>= 1;
}
      }
      crc_tab[i] = crc;
   }
}





#include"gobackn.h"

void geraCRC(char* dados){
//gera o CRC de dados
}

void enviadados(){
// envia os dados
}

void recebedados(){
//recebe os dados
}


int* comunica(){

char str1[128];
char str2[128];
memset(str1, 0, 128);
memset(str2, 0, 128);
mkfifo("/home/hulkPT/read.fifo", 0666);
mkfifo("/home/hulkPT/write.fifo", 0666);
sprintf(str1,"/home/hulkPT/read.fifo");
sprintf(str2,"/home/hulkPT/write.fifo");
int* fifo = (int*)malloc(sizeof(int)*2);

fifo[1] = open(str1, O_RDWR);
fifo[0] = open(str2, O_RDWR);
return fifo;

}


Este é o main do servidor "servidor.c"

#include"gobackn.h"

int main(){

printf("\nOla eu sou o Servidor");

return(0);

}


Este é o main do Cliente "cliente.c"


#include"gobackn.h"

int main(){

printf("\nOla eu sou o Cliente");

return(0);

}



Aqui esta a makefile do Servidor:

CFLAGS = -Wall -Wextra -g

all: Servidor

LC5: servidor.o gobackn.o crc.o
gcc -o $@ -lpthread servidor.o gobackn.o crc.o

servidor.o : servidor.c
gcc -c servidor.c $(CFLAGS)

gobackn.o : gobackn.c gobackn.h
gcc -c gobackn.c $(CFLAGS)

crc.o : crc.c crc.h
gcc -c crc.c $(CFLAGS)


clean:
-rm *.o

distclean: clean
-rm -f Servidor


eu queria com isto tudo poder ter duas makefiles para compilar o servidor.c e o cliente.c usando os dois o mesmo crc.c e gobackn.c

desde ja obrigado

HulkPT

Darcamo

Quado você digita "make" na linha de comando ele procura por um arquivo com nome "Makefile", mas você também pode especificar um outro arquivo com a opção "-f" ficando
make -f outro_arquivo

No entanto, acho mais prático simplesmente criar targets diferentes no Makefile e compilar o target com o comando
make target1
make target 2

etc