خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

چگونه توسعه Go خود را با Makefiles ساده کنید

با خودکار کردن کارهای تکراری با استفاده از Makefiles، زندگی خود را آسان‌تر کنید.

در توسعه نرم افزار مدرن، اتوماسیون ساخت کارآمد برای موفقیت یک پروژه بسیار مهم است. Makefiles، یک ابزار محبوب اتوماسیون ساخت، به توسعه دهندگان همه پشته ها روشی مختصر و قدرتمند برای مدیریت فرآیندهای ساخت پیچیده ارائه می دهد.

با ادغام و همکاری با Makefiles با Go، می توانید کارهای تکراری را خودکار کنید، فرآیندهای ساخت را ساده کنید و بهره وری را افزایش دهید.

آشنایی با MakeFiles

لوگوی محبوب ساخت فایل

درک نحوه عملکرد Makefiles برای سازماندهی کارآمد و خودکارسازی ساخت‌های پروژه شما بسیار مهم است.

Makefiles از ساختار و نحو خاصی برای تعریف قوانین ساخت و نگهداری پروژه ها پیروی می کند. در هسته، Makefile شامل قوانینی است که اهداف، وابستگی ها و دستورات را مشخص می کند. هر قانون با یک هدف شروع می شود و به دنبال آن وابستگی ها و دستورات مورد نیاز برای ساخت یا اجرای هدف قرار می گیرد.

اهداف نشان دهنده فایل های خروجی یا اقدامات مورد نظر برای Makefile هستند. اهداف می توانند نام فایل یا برچسب هایی باشند که وظیفه را توصیف می کنند. به عنوان مثال، هدفی به نام clean ممکن است فایل های غیر ضروری تولید شده در طول فرآیند ساخت را حذف کند.

وابستگی ها فایل ها یا وظایفی هستند که برای ساختن یک هدف مورد نیاز هستند. اگر هر گونه وابستگی اصلاح شود، Makefile اهداف مرتبط را بازسازی می کند تا اطمینان حاصل شود که بخش های ضروری پروژه کار می کنند. شما وابستگی ها را بعد از هدف مشخص می کنید که با فاصله از هم جدا شده اند.

دستورات اعمال یا دستورات پوسته ای هستند که برای ساختن یا انجام اهداف خاص نیاز به اجرا دارند. دستورات معمولاً به زبان برنامه نویسی پوسته سیستم عامل نوشته می شوند.

هر دستور باید با یک کاراکتر تب برای تشخیص شروع شود.

build: main.go utils.go
    go build -o myapp main.go utils.go

clean:
    rm myapp

در Makefile بالا دو هدف وجود دارد: build و clean.

مطلب مرتبط:   نحوه ارسال ایمیل در Go با استفاده از بسته Net/SMTP

هدف ساخت به فایل های main.go و utils.go بستگی دارد و دستور مربوطه روی کامپایلر Go اجرا می شود تا یک فایل اجرایی به نام myapp بسازد.

از طرف دیگر، هدف تمیز فایل اجرایی myapp را حذف می کند.

برای کامپایل کد Go خود، به دایرکتوری کاری بروید و دستور make build را اجرا کنید.

make build

ابزار Make فرآیند کامپایل را انجام می دهد و به شما امکان می دهد روی نوشتن کد تمرکز کنید.

تنظیم فایل‌های Makefiles برای پروژه‌های Go شما

می توانید از Makefiles برای ساخت و کامپایل برنامه های خود، انجام تست کد و بررسی کیفیت، و برای یکپارچه سازی و استقرار مداوم استفاده کنید.

این دستور را اجرا کنید تا یک Makefile برای پروژه خود در دایرکتوری ریشه ایجاد کنید. Makefile به عنوان نقطه ورودی برای تعریف وظایف ساخت شما عمل می کند.

touch Makefile

Makefile شما نباید هیچ پسوندی داشته باشد.

پس از ایجاد Makefile، می توانید دستورات، وابستگی ها و اهداف را برای عملیات پروژه خود در فایل بنویسید.

در اینجا یک نمونه Makefile است که به عنوان ابزار اتوماسیون ساخت پروژه شما عمل می کند:

# Makefile

# Variables
GOCMD=go
GOBUILD=$(GOCMD) build
GOTEST=$(GOCMD) test
GOCLEAN=$(GOCMD) clean

# Targets
build:
    $(GOBUILD) -o app .

test:
    $(GOTEST) ./...

clean:
    $(GOCLEAN)
    rm -f app

می توانید Makefile خود را با توجه به نیازهای خاص پروژه خود سفارشی کنید.

در اینجا یک نسخه اصلاح شده از Makefile برای ارسال پرچم ها و متغیرهای محیطی اضافی در طول فرآیند آزمایش یا ساخت پروژه شما آمده است:

# Makefile

# Variables
GOCMD=go
GOBUILD=$(GOCMD) build
GOTEST=$(GOCMD) test
GOCLEAN=$(GOCMD) clean
BINARY_NAME=app
TEST_FLAGS=-v

# Targets
build:
    $(GOBUILD) -o $(BINARY_NAME) .

test:
    $(GOTEST) $(TEST_FLAGS) ./...

clean:
    $(GOCLEAN)
    rm -f $(BINARY_NAME)

در این Makefile، دو متغیر جدید به نام‌های BINARY_NAME و TEST_FLAGS وجود دارد. متغیر BINARY_NAME نام فایل اجرایی تولید شده را مشخص می کند.

متغیر TEST_FLAGS به شما این امکان را می‌دهد که هنگام اجرای آزمایش‌ها، پرچم‌های اضافی را مشخص کنید (در این مورد، پرچم -v خروجی پرمخاطب را در طول اجرای آزمایش فعال می‌کند).

مطلب مرتبط:   نحوه بارگذاری فونت های سفارشی و جلوه های متنی در Pygame

Makefiles همچنین یک راه آسان برای پیکربندی متغیرهای محیطی و پرچم‌ها برای پروژه شما فراهم می‌کند.

اگر نیاز به تنظیم متغیرهای GOOS و GOARCH برای ساخت پروژه خود برای یک سیستم عامل یا معماری خاص دارید، می توانید این خطوط را به Makefile خود اضافه کنید.

# Makefile

# Variables
GOCMD=go
GOBUILD=$(GOCMD) build
GOTEST=$(GOCMD) test
GOCLEAN=$(GOCMD) clean
BINARY_NAME=app
TEST_FLAGS=-v
GOOS=linux
GOARCH=amd64

# Targets
build:
    $(GOBUILD) -o $(BINARY_NAME) .

test:
    $(GOTEST) $(TEST_FLAGS) ./...

clean:
    $(GOCLEAN)
    rm -f $(BINARY_NAME)

در Makefile به روز شده، دو متغیر جدید برای متغیرهای محیطی GOOS و GOARCH وجود دارد که به شما امکان می دهد سیستم عامل و معماری هدف را برای ساخت خود مشخص کنید (در این حالت، متغیر GOOS روی لینوکس و GOARCH روی amd64 تنظیم شده است تا بسازید. پروژه برای لینوکس در معماری x86-64).

به یاد داشته باشید که این متغیرها را بر اساس نیازهای خاص پروژه خود تطبیق دهید.

اگر می‌خواهید برای پلتفرم دیگری بسازید، می‌توانید برای فهرست مقادیر پشتیبانی‌شده برای GOOS و GOARCH به مستندات Go مراجعه کنید.

ساخت اتوماسیون با Makefiles

Makefiles همچنین برای کامپایل کد، تولید اسناد و مدیریت وابستگی ها مفید هستند.

با Makefiles، می توانید زمان کامپایل را خودکار کنید و در وقت و تلاش خود صرفه جویی کنید.

در اینجا یک Makefile است که یک برنامه Go را کامپایل می کند:

# Define variables
GOCMD = go
GOBUILD = $(GOCMD) build
BINARY_NAME = myprogram

# Default target
all: build

# Build target
build:
    $(GOBUILD) -o $(BINARY_NAME)

# Clean target
clean:
    rm -f $(BINARY_NAME)

Makefile متغیرهایی مانند GOCMD (فرمان Go) و GOBUILD (فرمان ساخت) را تعریف می کند. build target دستور go build را فراخوانی می کند تا برنامه Go ما را کامپایل کرده و باینری را با نام مشخص شده (در این مورد myprogram) تولید کند. هدف تمیز باینری تولید شده را از پروژه حذف می کند.

مطلب مرتبط:   نحوه پیاده سازی یک سیستم گفتگو در Pygame

makefile در عمل برای ساختن برنامه ها

می توانید از Makefiles برای خودکارسازی نصب وابستگی و به روز نگه داشتن وابستگی های خارجی پروژه خود استفاده کنید.

# Define variables
GOCMD = go
GOBUILD = $(GOCMD) build
GOGET = $(GOCMD) get
BINARY_NAME = myprogram

# Default target
all: build

# Build target
build:
    $(GOBUILD) -o $(BINARY_NAME)

# Install dependencies
deps:
    $(GOGET) -u

# Clean target
clean:
    rm -f $(BINARY_NAME)

Makefile دارای یک هدف deps است که از دستور go get برای نصب یا به روز رسانی وابستگی های پروژه استفاده می کند. می توانید make deps را برای نصب وابستگی های پروژه خود اجرا کنید.

Makefiles می تواند تولید اسناد را خودکار کند و اسناد شما را به عنوان فرآیند کد بهبود بخشد.

در اینجا نحوه ایجاد خودکار اسناد برای پروژه های Go خود با ابزار godoc و Makefile آمده است:

# Define variables
GODOC = godoc
DOCS_DIR = docs

# Default target
all: docs

# Generate documentation
docs:
    $(GODOC) -html -dir . > $(DOCS_DIR)/index.html

# Clean target
clean:
    rm -rf $(DOCS_DIR)

در Makefile، هدف docs دستور godoc را با پرچم -html فراخوانی می‌کند تا مستندات HTML را برای کد go شما ایجاد کند و اسناد را در دایرکتوری docs ذخیره می‌کند.

شما دستور make docs را برای ایجاد اسناد به روز برای پروژه Go خود اجرا می کنید.

Makefiles برای کار با سیستم عامل های مبتنی بر یونیکس مفید هستند

با استفاده از انعطاف‌پذیری Makefiles، می‌توانید دستورات ساخت سفارشی را تعریف کنید و وظایف پیچیده را در عرض چند دقیقه اجرا کنید. Makefile در زمان صرفه جویی می کند و ثبات و تکرارپذیری را در محیط های ساخت تضمین می کند.

یکی دیگر از مزایای Makefiles سازگاری آن با سیستم های مبتنی بر یونیکس است. Make یک ابزار کاربردی است که به طور گسترده در سیستم عامل های مبتنی بر یونیکس، از جمله لینوکس و macOS پشتیبانی می شود و آن را به ابزاری قابل حمل و قابل اعتماد برای توسعه دهندگان تبدیل می کند.