Makefiles kullanarak tekrar eden görevleri otomatikleştirerek hayatınızı kolaylaştırın.
Modern yazılım geliştirmede, bir projenin başarısı için verimli yapı otomasyonu çok önemlidir. Popüler bir yapı otomasyon aracı olan Makefiles, tüm yığınların geliştiricilerine karmaşık yapı süreçlerini yönetmenin özlü ve güçlü bir yolunu sunar.
Makefiles'i Go ile entegre ederek ve birlikte çalıştırarak, tekrarlayan görevleri otomatikleştirebilir, oluşturma süreçlerini kolaylaştırabilir ve üretkenliği artırabilirsiniz.
Makefiles'i Anlamak
Makefiles'in nasıl çalıştığını anlamak, proje yapılarınızı verimli bir şekilde organize etmek ve otomatikleştirmek için çok önemlidir.
Makefiles, proje oluşturmak ve sürdürmek için kuralları tanımlamak için belirli bir yapı ve sözdizimini takip eder. Temelde bir Makefile, hedefleri, bağımlılıkları ve komutları belirten kurallardan oluşur. Her kural bir hedefle başlar, ardından hedefi oluşturmak veya yürütmek için gereken bağımlılıklar ve komutlar gelir.
Hedefler, Makefile için istenen çıktı dosyalarını veya eylemleri temsil eder. Hedefler, görevi açıklayan dosya adları veya etiketler olabilir. Örneğin, adlı bir hedef
temiz oluşturma işlemi sırasında oluşturulan gereksiz dosyaları kaldırabilir.Bağımlılıklar, bir hedef oluşturmak için gereken dosyalar veya görevlerdir. Herhangi bir bağımlılık değiştirilirse, Makefile, proje işlevinin gerekli bölümlerinin çalışmasını sağlamak için ilişkili hedefleri yeniden oluşturur. Bağımlılıkları hedeften sonra boşluklarla ayırarak belirteceksiniz.
Komutlar eylemlerdir veya kabuk komutları belirli hedefleri oluşturmak veya gerçekleştirmek için yürütmeye ihtiyaç duyan. Komutlar genellikle işletim sisteminin kabuk betik dilinde yazılır.
Tanıma için her komut bir sekme karakteriyle başlamalıdır.
yapı: main.go utils.go
git build -o myapp main.go utils.go
temiz:
rm uygulamam
Yukarıdaki Makefile'de iki hedef vardır: inşa etmek Ve temiz.
bu inşa etmek hedef bağlıdır ana.git Ve utils.go dosyalar ve ilişkili komut, adında bir yürütülebilir dosya oluşturmak için Go derleyicisinde çalışır. uygulamam.
Öte yandan, temiz hedef kaldırır uygulamam yürütülebilir.
Go kodunuzu derlemek için çalışma dizinine gidin ve inşa etmek emretmek.
inşa etmek
Make aracı, derleme sürecini yöneterek kod yazmaya odaklanmanızı sağlar.
Go Projeleriniz için Makefile Ayarlama
Programlarınızı oluşturmak ve derlemek, kod testleri ve kalite kontrolleri yapmak ve sürekli entegrasyon ve dağıtım için Makefiles kullanabilirsiniz.
Kök dizinde projeniz için bir Makefile oluşturmak için bu komutu çalıştırın. bu makefile oluşturma görevlerinizi tanımlamak için giriş noktası olarak hizmet edecektir.
Makefile'a dokunun
Makefile dosyanızın herhangi bir uzantısı olmamalıdır.
Makefile'ı oluşturduktan sonra projenizin işlemleri için dosyaya komutlar, bağımlılıklar ve hedefler yazabilirsiniz.
İşte projeniz için bir derleme otomasyon aracı olarak hizmet veren bir Makefile örneği:
# Dosya oluştur
# Değişkenler
GOCMD=git
GOBUİLD=$(GOCMD) inşa etmek
GOTEST=$(GOCMD) Ölçek
GÖKLEAN=$(GOCMD) temiz# Hedefler
inşa etmek:
$(GOBUILD) -o uygulamasıÖlçek:
$(GOTEST) ./...
temiz:
$(GOCLEAN)
rm -f uygulaması
Makefile'ınızı projenizin özel ihtiyaçlarına göre özelleştirebilirsiniz.
İşte projenizin test veya oluşturma süreci sırasında ek bayrakları ve ortam değişkenlerini iletmek için Makefile'ın değiştirilmiş bir sürümü:
# Dosya oluştur
# Değişkenler
GOCMD=git
GOBUİLD=$(GOCMD) inşa etmek
GOTEST=$(GOCMD) Ölçek
GÖKLEAN=$(GOCMD) temiz
BINARY_NAME=uygulama
TEST_FLAGS=-v# Hedefler
inşa etmek:
$(GOBUILD) -Ö $(BINARY_NAME) .Ölçek:
$(GOTEST)$(TEST_FLAGS) ./...
temiz:
$(GOCLEAN)
rm-f $(BINARY_NAME)
Bu Makefile'da, adında iki yeni değişken var. BINARY_NAME Ve TEST_FLAGS. bu BINARY_NAME değişken, oluşturulan yürütülebilir dosyanın adını belirtir.
bu TEST_FLAGS değişkeni, testleri çalıştırırken ek işaretler belirtmenize izin verir (bu durumda, -v bayrağı, test yürütme sırasında ayrıntılı çıktı sağlar).
Makefiles ayrıca projeniz için ortam değişkenlerini ve bayrakları yapılandırmanın kolay bir yolunu sağlar.
Ayarlamanız gerekirse, bu satırları Makefile'nize ekleyebilirsiniz. GOOS Ve GOARCH projenizi belirli bir işletim sistemi veya mimarisi için oluşturmak için değişkenler.
# Dosya oluştur
# Değişkenler
GOCMD=git
GOBUİLD=$(GOCMD) inşa etmek
GOTEST=$(GOCMD) Ölçek
GÖKLEAN=$(GOCMD) temiz
BINARY_NAME=uygulama
TEST_FLAGS=-v
GOOS=linux
GOARCH=amd64# Hedefler
inşa etmek:
$(GOBUILD) -Ö $(BINARY_NAME) .Ölçek:
$(GOTEST)$(TEST_FLAGS) ./...
temiz:
$(GOCLEAN)
rm-f $(BINARY_NAME)
Güncellenen Makefile'da, iki yeni değişken vardır. GOOS Ve GOARCH yapınız için hedef işletim sistemini ve mimariyi belirtmenize izin veren ortam değişkenleri (bu durumda, GOOS değişken ayarlandı linux Ve GOARCH ile amd64 Linux projesini x86-64 mimarisinde oluşturmak için).
Bu değişkenleri projenizin özel gereksinimlerine göre uyarlamayı unutmayın.
başvurabilirsiniz Dokümantasyona git için desteklenen değerlerin listesi için GOOS Ve GOARCH farklı bir platform için oluşturmanız gerekiyorsa.
Makefiles ile Otomasyon Oluşturun
Makefiles ayrıca kod derlemek, belge oluşturmak ve bağımlılıkları yönetmek için kullanışlıdır.
Makefiles ile derleme süresini otomatikleştirerek zamandan ve emekten tasarruf edebilirsiniz.
İşte bir Go programını derleyen bir Makefile:
# Değişkenleri tanımlayın
GOCMD = git
GOBUİLD = $(GOCMD) inşa etmek
BINARY_NAME = programım# Varsayılan hedef
hepsi: inşa et# Hedef oluştur
inşa etmek:
$(GOBUILD) -Ö $(BINARY_NAME)
# Temiz hedef
temiz:
rm-f $(BINARY_NAME)
Makefile, aşağıdaki gibi değişkenleri tanımlar: GOCMD (Git komutu) ve GOBUİLD (inşa komutu). bu inşa etmek hedef çağırır git inşa et Go programımızı derlemek ve belirtilen ada sahip ikiliyi üretmek için komut (programım bu durumda). bu temiz hedef oluşturulan ikiliyi projeden kaldırır.
Bağımlılık kurulumunu otomatikleştirmek ve projenizin dış bağımlılıklarını güncel tutmak için Makefiles kullanabilirsiniz.
# Değişkenleri tanımlayın
GOCMD = git
GOBUİLD = $(GOCMD) inşa etmek
GİT = $(GOCMD) elde etmek
BINARY_NAME = programım# Varsayılan hedef
hepsi: inşa et# Hedef oluştur
inşa etmek:
$(GOBUILD) -Ö $(BINARY_NAME)# Bağımlılıkları yükleyin
Derinlik:
$(GOGET) -u
# Temiz hedef
temiz:
rm-f $(BINARY_NAME)
Makefile bir derinler kullanan hedef git al proje bağımlılıklarını kurmak veya güncellemek için komut. Koşabilirsin derinleştirmek projenizin bağımlılıklarını yüklemek için.
Makefiles, dokümantasyon oluşturmayı otomatikleştirebilir ve kod süreci olarak dokümanlar.
İşte nasıl yapabileceğiniz Godoc aracıyla Go projeleriniz için belgeleri otomatik oluşturun ve Makefile:
# Değişkenleri tanımlayın
GODOC = tanrı
DOCS_DIR = dokümanlar# Varsayılan hedef
tümü: dokümanlar# Dokümantasyon oluştur
dokümanlar:
$(GODOC) -html -dir. > $(DOCS_DIR)/index.html
# Temiz hedef
temiz:
rm-rf $(DOCS_DIR)
Makefile'da, dokümanlar hedef çağırır tanrı doc komutu ile -html go kodunuz için HTML dokümantasyonu oluşturmak üzere işaretler ve dokümantasyonu şuraya kaydeder: dokümanlar dizin.
çalıştıracaksın doküman yapmak Go projeniz için güncel belgeler oluşturmak için komut.
Makefile Dosyaları, Unix Tabanlı İşletim Sistemleriyle Çalışmak İçin Kullanışlıdır
Makefiles'in esnekliğinden yararlanarak, özel oluşturma komutları tanımlayabilir ve karmaşık görevleri dakikalar içinde yürütebilirsiniz. Makefile zaman kazandırır ve yapı ortamlarında tutarlılık ve tekrarlanabilirlik sağlar.
Makefiles'in bir diğer avantajı da Unix tabanlı sistemlerle uyumlu olmasıdır. Make, Linux ve macOS dahil olmak üzere Unix tabanlı işletim sistemlerinde yaygın olarak desteklenen bir yardımcı programdır ve geliştiriciler için taşınabilir ve güvenilir bir araçtır.