粗略尝试 GNU Make
大家好,我是无能。
我正在开发一个项目,叫做cuckooget,由于它支持通过pip安装,并且在开发阶段每次都进行安装处理很麻烦,所以这次我尝试使用了GNU Make。
说起来,我有一本O'Reilly的GNU Make书,也读过,但因为它是以C/C++为前提的,我以为没有机会引入它。不过这次我觉得如果引入它会很不错,所以就尝试了。
Makefile
结果如下:
$ 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 是为了作为 Python 库调用而单独构建的,而make 只负责 Rust 的构建。
多亏了添加了make clean,现在可以瞬间删除垃圾文件,相当方便。
还有其他用途吗?
之后,我可能会考虑将其引入到各种其他项目中,但对于单个项目中的混乱操作,如果将其整理到Makefile中,会更容易查看可以执行哪些操作,所以我觉得这很好。不过,如果只做些小事情,那就不需要了。
那么,下次再见。请多关照。