Estou modificando um Makefile
para adicionar um comando que será usado para atualizar e compilar uma dependência.
Já tenho o make clean
comando funcionando. Agora estou tentando executá-lo antes de executar qualquer outro make
comando.
Estou tentando adicionar all: clean
, mas não parece funcionar:
.PHONY: all
all: clean
.PHONY: clean
clean:
rm -rf build
update-dep:
mkdir -p build/package_name \
&& # do stuff here
Como posso executar limpo quando qualquer uma das outras funções é executada?
Bem, suponho que você saiba como as dependências funcionam, basta colá-las após os dois pontos. Portanto, um idioma um tanto comum seria ter uma dependência
all
como esta:É especial porque o primeiro destino no arquivo é o destino padrão, portanto, um explícito
all
no início do Makefile permite que você defina o padrão.Com
main_program
dependendo demain_program.o
etc. Se você quiser adicionarclean
lá como uma dependência, basta listá-la junto com as outras:Listagem
all: clean
sem outras dependências fariamake all
o mesmo quemake clean
, então você provavelmente deseja adicionar alguma outra dependência lá.Ainda não é uma boa ideia limpar tudo antes de cada execução, já que a ideia do Make é descobrir quais arquivos precisam ser atualizados e apenas fazer o trabalho necessário para isso. Você precisa ficar explicitamente
clean
como uma dependência de todos os outros destinos se quiser que seja executado sempre.