Сборка Go-проекта

У новичка могут возникнуть проблемы со сборкой проектов, написанных на Go. Это потому, что вначале во всех учебниках говорят про 8g/8l (6g/6l), а потом вот так сразу переходят к дебрям языка, а про make и правила сборки упускают.

Так вот, не пугайтесь. В Go самые простые Makefile. Давайте разбираться.

Сборка проекта

Для сборки проекта можно использовать такой шаблон Makefile:

include $(GOROOT)/src/Make.inc

TARG=mycmd
GOFILES=mycmd.go

include $(GOROOT)/src/Make.cmd

В любом Makefile для Go вначале включают Make.inc. В этом файле лежат общие правила сборки, а именно:

  • Проверяется окружение ($GOROOT, $GOOS, …)
  • Устанавливаются компиляторы (?g, ?l, ?a)
  • Создается правило, которое показывает ваше окружение: make go-env

После включения Make.inc (который обеспечивает вам кросс-платформенность, потому что внутри сам определяет платформу и устанавливает соответствующие переменные) создаем переменную $TARG. Это — имя вашего бинарника, который должен получиться в результате сборки.

Затем указывает $GOFILES — список файлов, из которых состоит проект. Файлов может быть несколько, напр. GOFILES=main.go util.go conf.go

Последняя строчка — это включение Make.cmd, файла, в котором описаны правила сборки «команды» — обычного приложения. В нем определяются также правила для тестирования проекта с помощью gotest.

Сборка пакета

Если же вы хотите собрать не приложение, а библиотеку (пакет), то замените Make.cmd на Make.pkg.

Все. Теперь можете делать make, make clean и даже make install.

Реклама

One comment on “Сборка Go-проекта

  1. […] я удивился, что там больше нет Makefile (помните – еще недавно мы их учились писать). Теперь все возложили на утилиту […]

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s