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?
A minha duvida é mais simples, como eu faço pra ler o enunciado??
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
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
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
E....eu também gostaria de saber como deve ser o MakeFile.dg
> 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.
> 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:
- ler o arquivo Makefile e criar o digrafo de dependências;
- 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.
É 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
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
Ok, obrigado.
[]'s
Posso assumir que toda dependência que não é target é um arquivo que já existe?
Nesta tarefa basta ler e imprimir o grafo, então não importa se o arquivo existe ou não...
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..
> 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 .
Posso colocar os vetores nome e comandos dentro da estrutura do digraph? Acho que fica mais organizado.
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.
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.
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!