粗略地嘗試 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