Experimentando GNU Make de forma simples
Olá, sou o Incompetente.
Entre as coisas que estou criando, há o cuckooget, e como adicionei suporte para instalação via pip e achei chato ter que fazer o processo de instalação toda vez durante o desenvolvimento, desta vez experimentei usar o GNU Make.
A razão é que eu tinha e li o livro GNU Make da O'Reilly, mas como a história era baseada em C/C++, eu pensei que não teria a oportunidade de introduzi-lo, mas desta vez, senti que seria bom incorporá-lo, então o fiz.
Makefile
Ficou assim:
$ cat Makefile
.PHONY: all check-deps build install clean done
WHEEL_DIR = lib/target/wheels
EGG_INFO = cuckooget.egg-info src/cuckooget.egg-info
all: check-deps build
check-deps:
@command -v pyenv >/dev/null || (echo "Please install pyenv" ; exit 1;)
@command -v python3 >/dev/null || (echo "Please install Python3" ; exit 1;)
@command -v maturin >/dev/null || ( echo "Please install maturin (pip install maturin)"; exit 1; )
build:
@echo "Building with maturin..."
cd lib && maturin build
install:
pip install . --force-reinstall
pip install $(WHEEL_DIR)/*.whl --force-reinstall
@echo "Done! How to use \`ck -h\`"
clean:
rm -rf build lib/target $(EGG_INFO)
done:
@echo "All steps completed."
O Rust está sendo construído separadamente para ser chamado como uma biblioteca Python, mas com make, estou apenas realizando a construção do Rust.
Graças à adição de make clean, agora posso remover arquivos temporários instantaneamente, o que é bastante conveniente.
Mais alguma coisa?
Mais tarde, pensei que seria bom introduzi-lo em várias outras coisas, mas se você está fazendo várias coisas em um único projeto, acho que é bom ter tudo agrupado em um Makefile, pois facilita a verificação do que pode ser executado, mas se você está fazendo apenas coisas pequenas, não é necessário.
Até a próxima. Obrigado.