Сделайте свою жизнь проще, автоматизируя повторяющиеся задачи с помощью Makefiles.

В современной разработке программного обеспечения эффективная автоматизация сборки имеет решающее значение для успеха проекта. Makefiles, популярный инструмент автоматизации сборки, предоставляет разработчикам всех стеков краткий и эффективный способ управления сложными процессами сборки.

Интегрируя и взаимодействуя Makefiles с Go, вы можете автоматизировать повторяющиеся задачи, оптимизировать процессы сборки и повысить производительность.

Понимание Makefile

Понимание того, как работают файлы Makefile, имеет решающее значение для эффективной организации и автоматизации сборки вашего проекта.

Makefiles имеют определенную структуру и синтаксис для определения правил создания и обслуживания проектов. По сути, Makefile состоит из правил, определяющих цели, зависимости и команды. Каждое правило начинается с цели, за которой следуют ее зависимости и команды, необходимые для построения или выполнения цели.

Цели представляют собой желаемые выходные файлы или действия для Makefile. Целями могут быть имена файлов или метки, описывающие задачу. Например, цель с именем

instagram viewer
чистый может удалить ненужные файлы, созданные в процессе сборки.

Зависимости — это файлы или задачи, необходимые для создания цели. Если какие-либо зависимости будут изменены, Makefile перестроит связанные цели, чтобы гарантировать, что необходимые части проекта функционируют. Вы укажете зависимости после цели, разделенные пробелами.

Команды – это действия или команды оболочки которые требуют выполнения для создания или выполнения определенных задач. Команды обычно записываются на языке сценариев оболочки операционной системы.

Каждая команда должна начинаться с символа табуляции для распознавания.

сборка: main.go utils.go
go build -o myapp main.go utils.go

чистый:
гм мое приложение

В приведенном выше Makefile есть две цели: строить и чистый.

строить цель зависит от main.go и utils.go файлы, и соответствующая команда запускается на компиляторе Go для создания исполняемого файла с именем мое приложение.

С другой стороны, чистый цель удаляет мое приложение исполняемый.

Чтобы скомпилировать код Go, перейдите в рабочий каталог и запустите сделать сборку команда.

сделать сборку

Инструмент Make возьмет на себя процесс компиляции, позволяя вам сосредоточиться на написании кода.

Настройка Makefile для ваших проектов Go

Вы можете использовать файлы Makefile для сборки и компиляции программ, тестирования кода и проверки качества, а также для непрерывной интеграции и развертывания.

Запустите эту команду, чтобы создать Makefile для вашего проекта в корневом каталоге. Makefile будет служить точкой входа для определения ваших задач сборки.

коснитесь Makefile

Ваш Makefile не должен иметь никаких расширений.

После создания Makefile вы можете записывать команды, зависимости и цели в файл для операций вашего проекта.

Вот пример Makefile, который служит инструментом автоматизации сборки для вашего проекта:

# Makefile

# Переменные
GOCMD=перейти
ПОСТРОЙКА=$(GOCMD) строить
ГОТЕСТ=$(GOCMD) тест
GOCLEAN=$(GOCMD) чистый

# Цели
строить:
$(GOBUILD) -о приложение.

тест:
$(ГОТЕСТ) ./...

чистый:
$(ГОКЛИН)
rm -f приложение

Вы можете настроить Makefile в соответствии с конкретными потребностями вашего проекта.

Вот модифицированная версия Makefile для передачи дополнительных флагов и переменных среды в процессе тестирования или сборки вашего проекта:

# Makefile

# Переменные
GOCMD=перейти
ПОСТРОЙКА=$(GOCMD) строить
ГОТЕСТ=$(GOCMD) тест
GOCLEAN=$(GOCMD) чистый
BINARY_NAME=приложение
TEST_FLAGS=-v

# Цели
строить:
$(GOBUILD)$(ДВОИЧНОЕ_ИМЯ) .

тест:
$(ГОТЕСТ)$(ТЕСТ_ФЛАГС) ./...

чистый:
$(ГОКЛИН)
гм -ф $(ДВОИЧНОЕ_ИМЯ)

В этом Makefile есть две новые переменные с именами BINARY_NAME и TEST_FLAGS. BINARY_NAME переменная указывает имя сгенерированного исполняемого файла.

TEST_FLAGS переменная позволяет указать дополнительные флаги при запуске тестов (в данном случае -v флаг включает подробный вывод во время выполнения теста).

Makefiles также предоставляет простой способ настроить переменные среды и флаги для вашего проекта.

Вы можете добавить эти строки в свой Makefile, если вам нужно установить ГСНО и ГОАРЧ переменные для создания вашего проекта для конкретной операционной системы или архитектуры.

# Makefile

# Переменные
GOCMD=перейти
ПОСТРОЙКА=$(GOCMD) строить
ГОТЕСТ=$(GOCMD) тест
GOCLEAN=$(GOCMD) чистый
BINARY_NAME=приложение
TEST_FLAGS=-v
ГООС=линукс
GOARCH=amd64

# Цели
строить:
$(GOBUILD)$(ДВОИЧНОЕ_ИМЯ) .

тест:
$(ГОТЕСТ)$(ТЕСТ_ФЛАГС) ./...

чистый:
$(ГОКЛИН)
гм -ф $(ДВОИЧНОЕ_ИМЯ)

В обновленном Makefile есть две новые переменные для ГСНО и ГОАРЧ переменные среды, позволяющие указать целевую операционную систему и архитектуру для сборки (в данном случае ГСНО переменная установлена ​​в линукс и ГОАРЧ к amd64 собрать проект для Linux на архитектуре x86-64).

Не забудьте адаптировать эти переменные в соответствии с конкретными требованиями вашего проекта.

Вы можете обратиться к Перейти к документации для списка поддерживаемых значений для ГСНО и ГОАРЧ если вам нужно построить для другой платформы.

Автоматизация сборки с помощью Makefiles

Makefiles также удобны для компиляции кода, создания документации и управления зависимостями.

С помощью Makefiles вы можете автоматизировать время компиляции, экономя время и силы.

Вот Makefile, который компилирует программу Go:

# Определяем переменные
GOCMD = идти
ПОСТРОЙКА = $(GOCMD) строить
BINARY_NAME = моя программа

# Цель по умолчанию
все: построить

# Создать цель
строить:
$(GOBUILD)$(ДВОИЧНОЕ_ИМЯ)

# Чистая цель
чистый:
гм -ф $(ДВОИЧНОЕ_ИМЯ)

Makefile определяет такие переменные, как ГОЦМД (команда «Перейти») и ГОБИЛД (команда сборки). строить цель вызывает иди строй команда для компиляции нашей программы Go и создания двоичного файла с указанным именем (моя программа в этом случае). чистый target удаляет сгенерированный двоичный файл из проекта.

Вы можете использовать Makefiles для автоматизации установки зависимостей и обновления внешних зависимостей вашего проекта.

# Определяем переменные
GOCMD = идти
ПОСТРОЙКА = $(GOCMD) строить
ГОГЕТ = $(GOCMD) получать
BINARY_NAME = моя программа

# Цель по умолчанию
все: построить

# Создать цель
строить:
$(GOBUILD)$(ДВОИЧНОЕ_ИМЯ)

# Установить зависимости
депс:
$(ГОГЕТ)

# Чистая цель
чистый:
гм -ф $(ДВОИЧНОЕ_ИМЯ)

В Makefile есть депс цель, которая использует иди возьми команда для установки или обновления зависимостей проекта. Вы можете запустить сделать депс для установки зависимостей вашего проекта.

Makefiles могут автоматизировать генерацию документации и улучшить документы как процесс кода.

Вот как вы можете автоматически генерировать документацию для ваших проектов Go с помощью инструмента godoc и Makefile:

# Определяем переменные
ГОДОК = годок
DOCS_DIR = документы

# Цель по умолчанию
все: документы

# Генерация документации
документы:
$(ГОДОК) -html -дир. > $(DOCS_DIR)/index.html

# Чистая цель
чистый:
рм -рф $(DOCS_DIR)

В Makefile, документы цель вызывает Годок команда с -html флаг, чтобы сгенерировать HTML-документацию для вашего кода go и сохранить документацию в документы каталог.

Вы будете запускать делать документы Команда для создания актуальной документации для вашего проекта Go.

Makefiles удобны для работы с операционными системами на основе Unix

Используя гибкость файлов Makefile, вы можете определять пользовательские команды сборки и выполнять сложные задачи за считанные минуты. Makefile экономит время и обеспечивает согласованность и воспроизводимость в средах сборки.

Еще одним преимуществом Makefiles является его совместимость с системами на базе Unix. Make — это широко поддерживаемая утилита в операционных системах на базе Unix, включая Linux и macOS, что делает ее портативным и надежным инструментом для разработчиков.