Простая попытка использования 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, легко проверить, что можно выполнить, так что это хорошо, но если вы делаете только мелочи, то это не нужно.
До новых встреч. Всего наилучшего.