粗略尝试 GNU Make

2 min

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

大家好,我是无能。
我正在开发一个项目,叫做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中,会更容易查看可以执行哪些操作,所以我觉得这很好。不过,如果只做些小事情,那就不需要了。

那么,下次再见。请多关照。

Related Posts