Facilite sua vida automatizando tarefas repetitivas usando Makefiles.

No desenvolvimento de software moderno, a automação de compilação eficiente é crucial para o sucesso de um projeto. Makefiles, uma ferramenta de automação de compilação popular, fornece aos desenvolvedores de todas as pilhas uma maneira concisa e poderosa de gerenciar processos de compilação complexos.

Ao integrar e interoperar Makefiles com Go, você pode automatizar tarefas repetitivas, otimizar processos de construção e aumentar a produtividade.

Entendendo os Makefiles

Compreender como os Makefiles funcionam é crucial para organizar e automatizar com eficiência as compilações do seu projeto.

Makefiles seguem uma estrutura e sintaxe específicas para definir regras para construir e manter projetos. Basicamente, um Makefile consiste em regras que especificam alvos, dependências e comandos. Cada regra começa com um destino, seguido por suas dependências e os comandos necessários para construir ou executar o destino.

Os destinos representam os arquivos de saída desejados ou ações para o Makefile. Os destinos podem ser nomes de arquivo ou rótulos que descrevem a tarefa. Por exemplo, um destino chamado

instagram viewer
limpar pode remover arquivos desnecessários gerados durante o processo de compilação.

Dependências são arquivos ou tarefas necessárias para construir um destino. Se alguma dependência for modificada, o Makefile reconstruirá os destinos associados para garantir que as partes necessárias do projeto funcionem. Você especificará as dependências após o destino, separadas por espaços.

Comandos são ações ou comandos shell que precisam de execução para construir ou executar alvos específicos. Os comandos geralmente são escritos em uma linguagem de script shell do sistema operacional.

Cada comando deve começar com um caractere de tabulação para reconhecimento.

construção: main.go utils.go
go build -o myapp main.go utils.go

limpar:
rm meu aplicativo

No Makefile acima, existem dois alvos: construir e limpar.

O construir alvo depende do main.go e utils.go arquivos e o comando associado é executado no compilador Go para criar um executável chamado meuaplicativo.

Por outro lado, o limpar alvo remove o meuaplicativo executável.

Para compilar seu código Go, navegue até o diretório de trabalho e execute o fazer construir comando.

fazer construir

A ferramenta Make cuidará do processo de compilação, permitindo que você se concentre em escrever o código.

Configurando Makefiles para seus projetos Go

Você pode usar Makefiles para criar e compilar seus programas, realizar testes de código e verificações de qualidade e para integração e implantação contínuas.

Execute este comando para criar um Makefile para seu projeto no diretório raiz. O Makefile servirá como ponto de entrada para definir suas tarefas de construção.

toque em Makefile

Seu Makefile não deve ter nenhuma extensão.

Depois de criar o Makefile, você pode escrever comandos, dependências e destinos no arquivo para as operações do seu projeto.

Aqui está um exemplo de Makefile que serve como uma ferramenta de automação de compilação para o seu projeto:

# Makefile

# Variáveis
GOCMD=ir
GOBUILD=$(GOCMD) construir
GOSTEI=$(GOCMD) teste
GOCLEAN=$(GOCMD) limpar

# Alvos
construir:
$(GOBUILD) -o aplicativo .

teste:
$(TESTE) ./...

limpar:
$(GOCLEAN)
aplicativo rm -f

Você pode personalizar seu Makefile de acordo com as necessidades específicas do seu projeto.

Aqui está uma versão modificada do Makefile para passar sinalizadores adicionais e variáveis ​​de ambiente durante o teste ou processo de construção do seu projeto:

# Makefile

# Variáveis
GOCMD=ir
GOBUILD=$(GOCMD) construir
GOSTEI=$(GOCMD) teste
GOCLEAN=$(GOCMD) limpar
BINARY_NAME=aplicativo
TEST_FLAGS=-v

# Alvos
construir:
$(GOBUILD) -o $(BINARY_NAME) .

teste:
$(TESTE)$(TEST_FLAGS) ./...

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

Neste Makefile, existem duas novas variáveis ​​chamadas BINARY_NAME e TEST_FLAGS. O BINARY_NAME variável especifica o nome do arquivo executável gerado.

O TEST_FLAGS variável permite que você especifique sinalizadores adicionais ao executar testes (neste caso, o -v sinalizador permite saída detalhada durante a execução do teste).

Makefiles também fornece uma maneira fácil de configurar variáveis ​​de ambiente e sinalizadores para seu projeto.

Você pode adicionar essas linhas ao seu Makefile se precisar definir o GOOS e GOARCH variáveis ​​para construir seu projeto para um sistema operacional ou arquitetura específica.

# Makefile

# Variáveis
GOCMD=ir
GOBUILD=$(GOCMD) construir
GOSTEI=$(GOCMD) teste
GOCLEAN=$(GOCMD) limpar
BINARY_NAME=aplicativo
TEST_FLAGS=-v
GOOS=linux
GOARCH=amd64

# Alvos
construir:
$(GOBUILD) -o $(BINARY_NAME) .

teste:
$(TESTE)$(TEST_FLAGS) ./...

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

No Makefile atualizado, há duas novas variáveis ​​para o GOOS e GOARCH variáveis ​​de ambiente que permitem especificar o sistema operacional de destino e a arquitetura para sua compilação (neste caso, o GOOS variável está definida como linux e GOARCH para amd64 para construir o projeto para Linux na arquitetura x86-64).

Lembre-se de adaptar essas variáveis ​​com base nos requisitos específicos do seu projeto.

Você pode consultar o Ir documentação para a lista de valores suportados para GOOS e GOARCH se você precisar construir para uma plataforma diferente.

Construir Automação com Makefiles

Makefiles também são úteis para compilar código, gerar documentação e gerenciar dependências.

Com Makefiles, você pode automatizar o tempo de compilação, economizando tempo e esforço.

Aqui está um Makefile que compila um programa Go:

# Definir variáveis
GOCMD = ir
GOBUILD = $(GOCMD) construir
BINARY_NAME = meuprograma

# Alvo padrão
todos: construir

# Alvo de construção
construir:
$(GOBUILD) -o $(BINARY_NAME)

# Alvo limpo
limpar:
rm -f $(BINARY_NAME)

O Makefile define variáveis ​​como o GOCMD (o comando Go) e GOBUILD (o comando de construção). O construir alvo invoca o vá construir comando para compilar nosso programa Go e produzir o binário com o nome especificado (meuprograma nesse caso). O limpar target remove o binário gerado do projeto.

Você pode usar Makefiles para automatizar a instalação de dependências e manter as dependências externas do seu projeto atualizadas.

# Definir variáveis
GOCMD = ir
GOBUILD = $(GOCMD) construir
GOGET = $(GOCMD) pegar
BINARY_NAME = meuprograma

# Alvo padrão
todos: construir

# Alvo de construção
construir:
$(GOBUILD) -o $(BINARY_NAME)

# Instalar dependências
dependências:
$(GOGET) -você

# Alvo limpo
limpar:
rm -f $(BINARY_NAME)

O Makefile tem um dependências alvo que usa o vai pegar comando para instalar ou atualizar as dependências do projeto. Você pode correr fazer dependências para instalar as dependências do seu projeto.

Makefiles podem automatizar a geração de documentação e melhorar sua docs como processo de código.

Veja como você pode gere documentação automaticamente para seus projetos Go com a ferramenta godoc e Makefile:

# Definir variáveis
GODOC = godoc
DOCS_DIR = documentos

# Alvo padrão
todos: documentos

# Gerar documentação
documentos:
$(GODOC) -html -dir. > $(DOCS_DIR)/index.html

# Alvo limpo
limpar:
rm-rf $(DOCS_DIR)

No Makefile, o documentos alvo invoca o godoc comando com o -html sinalizador para gerar documentação HTML para seu código go e salva a documentação no documentos diretório.

Você executará o fazer documentos comando para gerar documentação atualizada para seu projeto Go.

Makefiles são úteis para trabalhar com sistemas operacionais baseados em Unix

Aproveitando a flexibilidade dos Makefiles, você pode definir comandos de compilação personalizados e executar tarefas complexas em minutos. Makefile economiza tempo e garante consistência e reprodutibilidade em ambientes de construção.

Outra vantagem do Makefiles é sua compatibilidade com sistemas baseados em Unix. Make é um utilitário amplamente suportado em sistemas operacionais baseados em Unix, incluindo Linux e macOS, tornando-o uma ferramenta portátil e confiável para desenvolvedores.