Experimentando GNU Make de forma simples

3 min

language: ja bn en es hi pt ru zh-cn zh-tw

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.

Related Posts