Makefile

De TheNets Wiki
Ir para: navegação, pesquisa

Executar comandos com o bash ao invés do sh

Por padrão o Makefile executa os comandos shell com o sh, porém em alguns casos é necessário executar comandos com o bash, como para utilizar o comando source e atualizar variáveis de ambiente, por exemplo. Eu sei que existe outras maneiras de fazer isso com o sh, mas vamos considerar que se você não usar o bash vai ter um apocalipse e o Kratos vai vir pra julgar todos nós.

0 # Usando o `sh` como shell
1 SHELL:=/bin/sh
2 test:
3 	@echo $$0

Se você não definir, também usará o sh:

0 # Usando o `sh` como shell
1 test:
2 	@echo $$0

Usando o bash:

0 # Usando o `bash` como shell
1 SHELL:=/bin/bash
2 test:
3 	@echo $$0

Exibir mensagens de erro

O Makefile possui uma notação específica para retornar uma saída diferente de zero e enviar uma mensagem para o `stderr`:

0 $(error Mensagem de erro aqui!)

String em múltiplas linhas

O exemplo abaixo permite criar strings com múltiplas linhas e que interpreta comandos antes de retornar o resultado.

Primeiro a string é definida, depois exportada para que possa ser usada em outros contextos do Makefile e por fim o comando "test" exibe o comando na tela.

 0 define mystring
 1 | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
 2  OI, $(shell getent passwd "$(shell id -u)" | cut -d: -f1)!
 3  ESSA É MINHA STRING
 4  DE MULTIPLAS LINHAS
 5 |____________| 
 6   (\__/) ||
 7   (•ㅅ•) ||
 8   /    
 9 endef
10 export mystring
11 
12 test:
13 	@echo "$$mystring"