Essayer GNU Make de manière triviale
Bonjour, je suis incompétent.
Parmi les choses que je développe, il y a cuckooget. Comme j'ai ajouté la prise en charge de l'installation via pip et que c'était fastidieux de faire le processus d'installation à chaque étape de développement, j'ai essayé d'utiliser GNU Make cette fois.
En fait, j'avais un livre O'Reilly sur GNU Make et je l'avais lu, mais comme il était basé sur C/C++, je pensais que je n'aurais pas l'occasion de l'introduire. Cependant, cette fois, j'ai eu l'impression que ce serait bien de l'intégrer, alors je l'ai fait.
Makefile
Voici à quoi cela ressemble.
$ 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."
Rust est compilé séparément pour être appelé comme une bibliothèque Python, mais make ne fait que la compilation de Rust.
Grâce à l'ajout de make clean, je peux supprimer les fichiers temporaires en un instant, ce qui est assez pratique.
Autre chose ?
Plus tard, je pense que ce serait bien de l'introduire dans d'autres projets, mais si vous travaillez sur un seul projet et que c'est un peu désordonné, le regrouper dans un Makefile facilite la vérification de ce qui peut être exécuté, donc je pense que c'est une bonne idée. Cependant, si vous ne faites que de petites choses, ce n'est pas nécessaire.
À bientôt. Cordialement.