Dúvida sobre a tarefa 3

Dúvida sobre a tarefa 3

por Carlos Eduardo Manssur -
Número de respostas: 14
Olá,

Eu li o enunciado e fiquei com algumas dúvidas na tarefa 3:

1- O que seria o arquivo de saída MakeFile.dg? Um arquivo texto tipo:
Vértices:
meuprog
meuprog.o
fila.o
etc.o
meuprog.c

Arestas:
meuprog - meuprog.o
meuprog - fila.o
meuprog - etc.o
meuprog.o - meuprog.c

2- Eu tenho de fazer um Makefile só para compilar o meu Make.c e gerar o Make.exe?
Em resposta à Carlos Eduardo Manssur

Re: Dúvida sobre a tarefa 3

por Carlos Eduardo Manssur -
Bom... como eu não sabia exatamente o que é esse arquivo *.dg eu fiz assim:

Arquivo MakeFile:
----------------
teste0: teste1 teste2 teste3
<tab>gcc teste1
<tab> gcc teste2

teste1: teste4
<tab> gcc teste4

teste2: teste3
<tab> gcc teste3

teste 4:
<tab> rm alguma coisa
----------------

Arquivo MakeFile.dg:
----------------
Grafo gerado pelo Make atraves dos dados de MakeFile

Vertices:
teste0
teste1
teste2
teste3
teste4

Arestas:
teste0 - teste3
teste0 - teste2
teste0 - teste1
teste1 - teste4
teste2 - teste3

Comandos:
teste0:
gcc teste1
gcc teste2

teste1:
gcc teste4

teste2:
gcc teste3

teste4:
rm alguma coisa
----------------

[]'s
Em resposta à Carlos Eduardo Manssur

Re: Dúvida sobre a tarefa 3

por Marcela Ortega -
O vetor que deve armazenar todos os comandos do target pode ter um tamanho fixo? =P

E....eu também gostaria de saber como deve ser o MakeFile.dg
Em resposta à Marcela Ortega

Re: Dúvida sobre a tarefa 3

por José Coelho de Pina -
> O vetor que deve armazenar todos os comandos do target pode ter um tamanho fixo? 
Inicialmente, faça com um tamanho fixo. Algum número redondo como 128.
Depois, pense como modificar o código para não depender do do tamanho.
Em resposta à Carlos Eduardo Manssur

Re: Dúvida sobre a tarefa 3

por José Coelho de Pina -
> 1- O que seria o arquivo de saída MakeFile.dg? Um arquivo texto tipo:
[...]
Não, é um arquivo como o MakeFile que você leu:
meuprog: meuprog.o  fila.o  etc.o
<TAB> gcc meuprog.o fila.o etc.o -o meuprog 
[...]

O programa de vocês deve:

  1. ler o arquivo Makefile e criar o digrafo de dependências;
  2. pecorrer o digrafo de dependências e gerar o arquivo MakeFile.dg.
    Este arquivo é parecido com MakeFile, possivelmente sem as linhas em branco
    ou trocando alguma das regras de lugar; esta ordem é irrelevante, ela
    depende de como o seu Make gerou o grafo.
Acrescentei a descrição acima ao enunciado, muito obrigado.

É importante que o arquivo MakeFile.dg seja gerado percorrendo o digrafo de dependências.
Isto serve para vermos se o digrafo foi gerado corretamente, que é o que interessa para a Tarefa 4.

Não deixem de testar o programa de vocês com algum MakeFile que tem mais do que uma linha de comando
para um mesmo target. Por exemplo:

clean:
      rm -f meuprog.o fila.o etc.o
      cp meuprog.c meuprog-salvo.c
      cp fila.c fila-salva.c
Em resposta à José Coelho de Pina

Re: Dúvida sobre a tarefa 3

por Carlos Eduardo Manssur -
Entendi... então o intuito é gerar outro makefile idêntico ao primeiro só que percorrendo o digrafo pra "provar" que o digrafo foi gerado...

Ok, obrigado.

[]'s
Em resposta à José Coelho de Pina

Re: Dúvida sobre a tarefa 3

por César Machado -
Posso assumir que toda dependência que não é target é um arquivo que já existe?
Em resposta à César Machado

Re: Dúvida sobre a tarefa 3

por Rafael Schouery -
Nesta tarefa basta ler e imprimir o grafo, então não importa se o arquivo existe ou não...
Em resposta à Rafael Schouery

Re: Dúvida sobre a tarefa 3

por César Machado -
O que eu queria dizer era se poderíamos desprezar completamente as dependências que não são targets na hora de fazer o digrafo, mas depois reparei que o Makefile ia ficar incompleto..
Em resposta à Carlos Eduardo Manssur

Re: Dúvida sobre a tarefa 3

por José Coelho de Pina -
> 2- Eu tenho de fazer um Makefile só para compilar o meu Make.c e gerar o Make.exe?
Certo, mas não é Make.exe, é Make .
Em resposta à Carlos Eduardo Manssur

Re: Dúvida sobre a tarefa 3

por Paulo Henrique Floriano -
Posso colocar os vetores nome e comandos dentro da estrutura do digraph? Acho que fica mais organizado.
Em resposta à Paulo Henrique Floriano

Re: Dúvida sobre a tarefa 3

por Rafael Schouery -
Isso depende mais de você, mas garanta que o código seja limpo e fácil de entender. Algumas vezes basta guardar um ponteiro para onde está informação.

Pense nas vantagens e desvantagens de se fazer isso. Tente pensar na eficiência necessária para algumas operações. Mas não existe apenas uma forma de fazer.
Em resposta à Paulo Henrique Floriano

Re: Dúvida sobre a tarefa 3

por Natan Costa Lima -
Tem a desvantagem de escrever o mesmo nome varias vezes no digrafo, caso vc usasse soh um ponteiro ou o numero do vertice vc nao ia gastar esse espaço extra!