Pergunta

Eu estou enfrentando um problema muito estranho com o make. Meu arquivo make contém:

all: item1 item2

item1: dep1 dep2
dep1:
    @echo
    cd $(HOME)/apps; /bin/rm -f $(D_ALL_OBJECTS) 
    cd $(SRCHOME)/fusionapps; make -k -f $(SOMEMAKEFILE) $(D_ALL_OBJECTS)
    @echo
dep2:
    @echo
    cd $(HOME)/apps; /bin/rm -f $(D2_ALL_OBJECTS) 
    cd $(SRCHOME)/fusionapps; make -k -f $(SOMEMAKEFILE) $(D2_ALL_OBJECTS)
    @echo
item2: ...
.....

Agora, "make -f Makefile item1" obras, mas quando eu tento "make -f Makefile all" ele não funciona. Você pessoas vêem nenhum problema em meu makefile?

Graças


Adenda :

Bem, parece que faz não permite alvos que têm mesmo nome de algum diretório no nível atual. Observação:

  • "todos" é um diretório @ $ (HOME) / apps
  • all1: item1 item2 funciona
  • all: item1 item2 não trabalho

Assim, qualquer nome de destino ter mesmo nome de um diretório parece falhar (como, deixa de fazer alguma coisa útil).

Eu tenho certeza que eu estou fazendo algo absurdamente errado aqui.

Foi útil?

Solução

Quando você escreve:

all: item1 item2

e, em seguida, make all pedido, que conta make:

  • Encontre um sistema de arquivos objeto chamado all e certificar-se de qualquer coisa que depende (item1, item2) é até à data.
  • Se all não existe ou está desatualizado w.r.t quer do sistema de arquivos objetos chamados item1 ou item2, em seguida, fazer as ações especificadas (nenhum neste exemplo) e, em seguida, considerar all até à data.
  • Se all é um diretório, ele existe. Se ele foi modificado recentemente, será atualizado.

A sugestão de uso .PHONY: all item1 item2 é bom para o GNU make; ele não funciona com outras variantes de make.

Não use nomes de destino que são nomes de diretório - a menos que você tem certeza que sabe o que está fazendo. E uso .PHONY.

Outras dicas

Tente -falso declarando seu todos- -alvo.

Bem parece make não permite alvos que têm mesmo nome de algum diretório no nível atual. Observação:

- "todos" é um diretório @ $ (HOME) / apps -all1 / 2/3: item1 item2 obras -todos: item1 item2 não funciona assim é a qualquer nome de destino tendo mesmo nome que o diretório

.

Eu tenho certeza que eu estou fazendo nada absurdamente errado aqui.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top