Makefile を使用して Go 開発を効率化する方法

Makefile を使用して Go 開発を効率化する方法
あなたのような読者が MUO をサポートします。当社サイトのリンクを使用して商品を購入すると、アフィリエイト手数料が発生する場合があります。 続きを読む。

現代のソフトウェア開発では、プロジェクトの成功には効率的なビルド自動化が不可欠です。人気のあるビルド自動化ツールである Makefile は、すべてのスタックの開発者に、複雑なビルド プロセスを管理するための簡潔かつ強力な方法を提供します。





Makefile を Go と統合して相互運用することで、反復的なタスクを自動化し、ビルド プロセスを合理化し、生産性を向上させることができます。





その日のメイクアップビデオ スクロールしてコンテンツを続けてください

メイクファイルを理解する

  人気のある Makefile ロゴ

Makefile がどのように機能するかを理解することは、プロジェクトのビルドを効率的に整理して自動化するために非常に重要です。





Makefile は、プロジェクトの構築と維持のためのルールを定義するための特定の構造と構文に従います。基本的に、Makefile はターゲット、依存関係、およびコマンドを指定するルールで構成されます。各ルールはターゲットで始まり、その依存関係と、ターゲットを構築または実行するために必要なコマンドが続きます。

ターゲットは、Makefile の目的の出力ファイルまたはアクションを表します。ターゲットは、タスクを説明するファイル名またはラベルです。たとえば、次のようなターゲット 綺麗 ビルドプロセス中に生成された不要なファイルを削除する場合があります。



依存関係は、ターゲットの構築に必要なファイルまたはタスクです。依存関係が変更された場合、Makefile は関連するターゲットを再構築して、プロジェクトの必要な部分が機能することを確認します。ターゲットの後にスペースで区切って依存関係を指定します。

コマンドはアクションまたは シェルコマンド 特定のターゲットを構築または実行するために実行が必要なもの。コマンドは通常、オペレーティング システムのシェル スクリプト言語で記述されます。





各コマンドは、認識されるようにタブ文字で始まる必要があります。

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

clean:
    rm myapp

上記の Makefile には、次の 2 つのターゲットがあります。 建てる 綺麗





建てる ターゲットはによって異なります メイン.ゴー utils.go ファイルを作成すると、関連するコマンドが Go コンパイラーで実行され、 という名前の実行可能ファイルがビルドされます。 マイアプリ

一方、 綺麗 ターゲットが削除します マイアプリ 実行可能。

Go コードをコンパイルするには、作業ディレクトリに移動して、 ビルドする 指図。

 make build 

Make ツールがコンパイル プロセスを処理するため、コードの作成に集中できます。

Go プロジェクト用の Makefile のセットアップ

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 には、次の名前の 2 つの新しい変数があります。 BINARY_NAME テストフラグ 。の BINARY_NAME 変数には、生成される実行可能ファイルの名前を指定します。

テストフラグ 変数を使用すると、テストの実行時に追加のフラグを指定できます (この場合、 -の フラグはテスト実行中の冗長出力を有効にします)。

アンドロイドを運転している間の自動返信テキスト

Makefile は、プロジェクトの環境変数とフラグを構成する簡単な方法も提供します。

を設定する必要がある場合は、これらの行を 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 には、 グース ゴアーチ ビルドのターゲット オペレーティング システムとアーキテクチャを指定できる環境変数 (この場合、 グース 変数はに設定されています リナックス ゴアーチ amd64 x86-64 アーキテクチャ上で Linux 用のプロジェクトをビルドします)。

プロジェクト固有の要件に基づいてこれらの変数を調整することを忘れないでください。

を参照できます。 Go ドキュメント サポートされている値のリストについては、 グース ゴアーチ 別のプラットフォーム用にビルドする必要がある場合。

Makefile を使用したビルド自動化

Makefile は、コードのコンパイル、ドキュメントの生成、依存関係の管理にも便利です。

Makefile を使用すると、コンパイル時間を自動化し、時間と労力を節約できます。

Go プログラムをコンパイルする Makefile は次のとおりです。

 # 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 コマンド) および ゴビルド (ビルドコマンド)。の 建てる ターゲットは 作りに行く Go プログラムをコンパイルし、指定された名前のバイナリを生成するコマンド ( 私のプログラム この場合)。の 綺麗 target は、生成されたバイナリをプロジェクトから削除します。

  プログラムを構築するために動作中の makefile

Makefile を使用すると、依存関係のインストールを自動化し、プロジェクトの外部依存関係を最新の状態に保つことができます。

 # 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 には、 を使用するターゲット 取ってきます プロジェクトの依存関係をインストールまたは更新するコマンド。走れるよ デプスを作る プロジェクトの依存関係をインストールします。

Makefile はドキュメントの生成を自動化し、ドキュメントの作成を改善します。 コードプロセスとしてのドキュメント 。

その方法は次のとおりです godoc ツールを使用して Go プロジェクトのドキュメントを自動生成する およびメイクファイル:

 # 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 では、 ドキュメント ターゲットは ゴドック を使用したコマンド -html フラグを使用して Go コードの HTML ドキュメントを生成し、ドキュメントを ドキュメント ディレクトリ。

あなたが実行するのは、 ドキュメントを作成する Go プロジェクトの最新ドキュメントを生成するコマンド。

Makefile は Unix ベースのオペレーティング システムを操作する場合に便利です

Makefile の柔軟性を活用することで、カスタム ビルド コマンドを定義し、複雑なタスクを数分以内に実行できます。 Makefile は時間を節約し、ビルド環境間での一貫性と再現性を保証します。

Makefile のもう 1 つの利点は、Unix ベースのシステムとの互換性です。 Make は、Linux や macOS を含む Unix ベースのオペレーティング システムで広くサポートされているユーティリティであり、開発者にとってポータブルで信頼性の高いツールとなっています。