Cách hợp lý hóa quá trình phát triển Go của bạn với Makefiles
Trong phát triển phần mềm hiện đại, tự động hóa bản dựng hiệu quả là rất quan trọng cho sự thành công của dự án. Makefiles, một công cụ tự động hóa bản dựng phổ biến, cung cấp cho nhà phát triển của tất cả các ngăn xếp một cách ngắn gọn và mạnh mẽ để quản lý các quy trình xây dựng phức tạp.
Bằng cách tích hợp và tương tác Makefiles với Go, bạn có thể tự động hóa các tác vụ lặp đi lặp lại, hợp lý hóa quy trình xây dựng và nâng cao năng suất.
Mục Lục
Hiểu Makefiles
Hiểu cách thức hoạt động của Makefiles là rất quan trọng để tổ chức và tự động hóa hiệu quả các bản dựng dự án của bạn.
Makefiles tuân theo một cấu trúc và cú pháp cụ thể để xác định quy tắc xây dựng và duy trì dự án. Về cốt lõi, Makefile bao gồm các quy tắc chỉ định mục tiêu, phần phụ thuộc và lệnh. Mỗi quy tắc bắt đầu với một mục tiêu, theo sau là các phần phụ thuộc của nó và các lệnh cần thiết để xây dựng hoặc thực thi mục tiêu.
Các mục tiêu đại diện cho các tệp đầu ra hoặc hành động mong muốn cho Makefile. Mục tiêu có thể là tên tệp hoặc nhãn mô tả nhiệm vụ. Ví dụ, một mục tiêu có tên lau dọn có thể xóa các tệp không cần thiết được tạo trong quá trình xây dựng.
Phụ thuộc là các tệp hoặc tác vụ cần thiết để xây dựng mục tiêu. Nếu bất kỳ phần phụ thuộc nào được sửa đổi, Makefile sẽ xây dựng lại các mục tiêu được liên kết để đảm bảo rằng các phần cần thiết của chức năng dự án. Bạn sẽ chỉ định các phụ thuộc sau mục tiêu, được phân tách bằng dấu cách.
Lệnh là các hành động hoặc lệnh trình bao cần thực hiện để xây dựng hoặc thực hiện các mục tiêu cụ thể. Các lệnh thường được viết bằng ngôn ngữ shell scripting của hệ điều hành.
Mỗi lệnh phải bắt đầu bằng một ký tự tab để nhận dạng.
build: main.go utils.go
go build -o myapp main.go utils.goclean:
rm myapp
Trong Makefile ở trên, có hai mục tiêu: xây dựng Và lau dọn.
Các xây dựng mục tiêu phụ thuộc vào chính.go Và utils.go tệp và lệnh được liên kết chạy trên trình biên dịch Go để xây dựng tệp thực thi có tên ứng dụng của tôi.
Mặt khác, các lau dọn mục tiêu loại bỏ ứng dụng của tôi thực thi được.
Để biên dịch mã Go của bạn, hãy điều hướng đến thư mục làm việc và chạy xây dựng yêu cầu.
make build
Công cụ Make sẽ xử lý quá trình biên dịch, cho phép bạn tập trung vào việc viết mã.
Thiết lập Makefiles cho các dự án Go của bạn
Bạn có thể sử dụng Makefiles để xây dựng và biên dịch chương trình của mình, thực hiện kiểm tra mã và kiểm tra chất lượng cũng như để tích hợp và triển khai liên tục.
Chạy lệnh này để tạo Makefile cho dự án của bạn trong thư mục gốc. Các Makefile sẽ đóng vai trò là điểm vào để xác định các tác vụ xây dựng của bạn.
touch Makefile
Makefile của bạn không được có bất kỳ phần mở rộng nào.
Sau khi tạo Makefile, bạn có thể viết các lệnh, phần phụ thuộc và mục tiêu vào tệp cho các hoạt động của dự án.
Đây là một Makefile ví dụ đóng vai trò là công cụ tự động hóa bản dựng cho dự án của bạn:
GOCMD=go
GOBUILD=$(GOCMD) build
GOTEST=$(GOCMD) test
GOCLEAN=$(GOCMD) clean
build:
$(GOBUILD) -o app .
test:
$(GOTEST) ./...
clean:
$(GOCLEAN)
rm -f app
Bạn có thể tùy chỉnh Makefile của mình theo nhu cầu cụ thể của dự án.
Đây là phiên bản sửa đổi của Makefile để chuyển các cờ bổ sung và biến môi trường trong quá trình thử nghiệm hoặc xây dựng dự án của bạn:
GOCMD=go
GOBUILD=$(GOCMD) build
GOTEST=$(GOCMD) test
GOCLEAN=$(GOCMD) clean
BINARY_NAME=app
TEST_FLAGS=-v
build:
$(GOBUILD) -o $(BINARY_NAME) .
test:
$(GOTEST) $(TEST_FLAGS) ./...
clean:
$(GOCLEAN)
rm -f $(BINARY_NAME)
Trong Makefile này có 2 biến mới tên là BINARY_NAME Và TEST_FLAGS. Các BINARY_NAME biến chỉ định tên của tệp thực thi được tạo.
Các TEST_FLAGS biến cho phép bạn chỉ định các cờ bổ sung khi chạy thử nghiệm (trong trường hợp này, -v cờ cho phép đầu ra dài dòng trong khi thực hiện kiểm tra).
Makefiles cũng cung cấp một cách dễ dàng để định cấu hình các biến môi trường và cờ cho dự án của bạn.
Bạn có thể thêm những dòng này vào Makefile của mình nếu bạn cần đặt ĐÚNG Và MỤC ĐÍCH các biến để xây dựng dự án của bạn cho một hệ điều hành hoặc kiến trúc cụ thể.
GOCMD=go
GOBUILD=$(GOCMD) build
GOTEST=$(GOCMD) test
GOCLEAN=$(GOCMD) clean
BINARY_NAME=app
TEST_FLAGS=-v
GOOS=linux
GOARCH=amd64
build:
$(GOBUILD) -o $(BINARY_NAME) .
test:
$(GOTEST) $(TEST_FLAGS) ./...
clean:
$(GOCLEAN)
rm -f $(BINARY_NAME)
Trong Makefile được cập nhật, có hai biến mới cho ĐÚNG Và MỤC ĐÍCH biến môi trường cho phép bạn chỉ định hệ điều hành đích và kiến trúc cho bản dựng của bạn (trong trường hợp này, ĐÚNG biến được đặt thành linux Và MỤC ĐÍCH ĐẾN amd64 để xây dựng dự án cho Linux trên kiến trúc x86-64).
Hãy nhớ điều chỉnh các biến này dựa trên các yêu cầu cụ thể của dự án của bạn.
Bạn có thể tham khảo tài liệu về Go để biết danh sách các giá trị được hỗ trợ cho ĐÚNG Và MỤC ĐÍCH nếu bạn cần xây dựng cho một nền tảng khác.
Xây dựng tự động hóa với Makefiles
Makefiles cũng tiện dụng để biên dịch mã, tạo tài liệu và quản lý các phần phụ thuộc.
Với Makefiles, bạn có thể tự động hóa thời gian biên dịch, tiết kiệm thời gian và công sức.
Đây là Makefile biên dịch chương trình Go:
GOCMD = go
GOBUILD = $(GOCMD) build
BINARY_NAME = myprogram
all: build
build:
$(GOBUILD) -o $(BINARY_NAME)
clean:
rm -f $(BINARY_NAME)
Makefile định nghĩa các biến như GOCMD (lệnh Go) và GOBUILD (lệnh xây dựng). Các xây dựng mục tiêu gọi đi xây dựng lệnh để biên dịch chương trình Go của chúng ta và tạo tệp nhị phân với tên đã chỉ định (chương trình của tôi trong trường hợp này). Các lau dọn target xóa tệp nhị phân được tạo khỏi dự án.
Bạn có thể sử dụng Makefiles để tự động cài đặt phần phụ thuộc và luôn cập nhật các phần phụ thuộc bên ngoài của dự án.
GOCMD = go
GOBUILD = $(GOCMD) build
GOGET = $(GOCMD) get
BINARY_NAME = myprogram
all: build
build:
$(GOBUILD) -o $(BINARY_NAME)
deps:
$(GOGET) -u
clean:
rm -f $(BINARY_NAME)
Makefile có một người đẹp mục tiêu sử dụng đi lấy lệnh để cài đặt hoặc cập nhật các phụ thuộc của dự án. Bạn có thể chạy làm đẹp để cài đặt các phụ thuộc của dự án của bạn.
Makefiles có thể tự động hóa việc tạo tài liệu và cải thiện tài liệu của bạn dưới dạng quy trình mã.
Đây là cách bạn có thể tự động tạo tài liệu cho các dự án Go của mình bằng công cụ godoc và Makefile:
GODOC = godoc
DOCS_DIR = docs
all: docs
docs:
$(GODOC) -html -dir . > $(DOCS_DIR)/index.html
clean:
rm -rf $(DOCS_DIR)
Trong Makefile, tài liệu mục tiêu gọi thần tài lệnh với -html cờ để tạo tài liệu HTML cho mã đi của bạn và lưu tài liệu vào tài liệu danh mục.
Bạn sẽ chạy làm tài liệu để tạo tài liệu cập nhật cho dự án Go của bạn.
Makefiles thuận tiện để làm việc với các hệ điều hành dựa trên Unix
Bằng cách tận dụng tính linh hoạt của Makefiles, bạn có thể xác định các lệnh xây dựng tùy chỉnh và thực thi các tác vụ phức tạp trong vòng vài phút. Makefile tiết kiệm thời gian và đảm bảo tính nhất quán cũng như khả năng tái tạo trên các môi trường xây dựng.
Một ưu điểm khác của Makefiles là khả năng tương thích với các hệ thống dựa trên Unix. Make là một tiện ích được hỗ trợ rộng rãi trên các hệ điều hành dựa trên Unix, bao gồm Linux và macOS, khiến nó trở thành một công cụ di động và đáng tin cậy cho các nhà phát triển.