faz vários alvos

0

Eu tenho este Makefile:

P5.obj P5.sym: P5.asm
        lc3as P5.asm

Eu quero que o assembler seja executado se P5.obj ou P5.sym estiverem desatualizados. No entanto, excluir P5.sym não faz com que seja regenerado.

O que estou fazendo de errado?

    
por Nick ODell 16.01.2018 / 19:35

2 respostas

1

(Eu assumi que lc3as P5.asm irá gerar arquivos P5.obj e P5.sym . Assumindo que você tente executar make .)

O alvo padrão é o primeiro alvo, a menos que você não o especifique (depende do make-dialect).

Por exemplo:

# Makefile
a b:
    echo a > a
    echo b > b

Se você executar make , ambos os arquivos a e b serão criados. Se você excluir b e executar make :

'a' is up to date.

porque o a target é o padrão.

A solução geral é criar um destino com o nome all no início de Makefile :

all: a b

a b:
   echo a > a
   echo b > b

.PHONY: all

Nesse caso, se você excluir b , o make irá gerar novamente (porque o destino padrão é all e suas dependências são a e b ).

    
por 16.01.2018 / 20:14
0

Dependências geralmente vão atrás do nome da regra, embora não esteja claro para mim a partir de sua pergunta quais são as entradas e qual é a saída. Supondo que lc3as P5.asm produza P5 como saída (e dependa de todos os P5.asm , P5.obj e P5.sym ), a entrada pode ser algo como:

P5: P5.asm P5.obj P5.sym
        lc3as P5.asm
    
por 16.01.2018 / 19:59

Tags