সাধারণভাবে GNU Make চেষ্টা করা

3 min

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

নমস্কার, আমি মুনো।
আমি যা তৈরি করছি তার মধ্যে একটি হল cuckoogetpip দিয়ে ইনস্টলেশন সমর্থন করার কারণে এবং ডেভেলপমেন্টের সময় প্রতিবার ইনস্টলেশন প্রক্রিয়া করা বিরক্তিকর হওয়ায়, আমি এবার GNU Make ব্যবহার করে দেখেছি।
কারণ, আমার কাছে ও'রিলি-র 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."

পাইথন লাইব্রেরি হিসাবে কল করার জন্য রাস্ট আলাদাভাবে তৈরি করা হয়েছে, তবে make শুধুমাত্র সেই রাস্ট বিল্ডটি করে।
make clean যোগ করার কারণে, আমি এখন এক মুহূর্তে অপ্রয়োজনীয় ফাইল মুছে ফেলতে পারি, যা বেশ সুবিধাজনক।

অন্য কিছু?

পরে, আমি মনে করি এটি অন্যান্য বিভিন্ন ক্ষেত্রেও প্রয়োগ করা যেতে পারে, কিন্তু যদি আপনি একটি একক প্রকল্পে কাজ করেন, তবে Makefile-এ সবকিছু একসাথে রাখলে কী কী চালানো যাবে তা পরীক্ষা করা সহজ হয়, তাই আমি মনে করি এটি ভালো, তবে যদি আপনি কেবল ছোটখাটো কাজ করেন, তবে এটি প্রয়োজনীয় নয়।

তাহলে আবার দেখা হবে। শুভেচ্ছা রইল।

Related Posts