Go Makefile путаница - PullRequest
       14

Go Makefile путаница

0 голосов
/ 10 октября 2011

Я пишу пакет Go, назовем его «крутой материал».Я хочу включить файл example.go, который запускает примеры из API Coolstuff.Но Makefile по умолчанию не будет собирать пакет coolstuff и example.go, жалуясь:

example.go:1: package main; expected coolstuff
example.go:3: can't find import: coolstuff

Как я могу а) скомпилировать пакет, б) установить пакет так, чтобы любой будущий код, который я пишу, зналкак найти coolstuff, и c) собрать example.go, который зависит от coolstuff?

Нужны ли мне два файла Makefile, один для пакета и один для example.go?

1 Ответ

3 голосов
/ 10 октября 2011

Есть несколько способов сделать это.

1) Это не совсем то, что вы описали, но есть возможность добавить файл с именем example_test.go в ваш пакет coolstuff. Если вы просто установите пакет, этот файл будет проигнорирован, однако когда вы выполняете gotest внутри вашего пакета coolstuff, тогда gotest автоматически соберет ваш пакет, включающий все файлы *_test.go, и запустит их. На мой взгляд, это самый простой способ, так как вам не нужно иметь дело с несколькими пакетами, и вы также можете предоставить много независимых примеров / тестовых случаев. В будущих версиях go эти примеры будут добавлены в вашу документацию по godoc pkg.

2) Если вам неудобно использовать Makefiles, возможно, вы захотите поближе взглянуть на goinstall . Вы можете установить переменную окружения GOPATH, чтобы определить свой собственный каталог проекта. Пример структуры каталогов, которая подходит для goinstall, приведен внизу страницы. («bar» похожа на ваш «coolstuff pkg», а «qux» может быть вашим «примером»). goinstall автоматически определит все эти зависимости сборки.

3) Использование Makefiles также возможно. Создание двух из них, один из которых основан на Make.pkg для вашего каталога пакета coolstuff, а другой - на основе Make.cmd для вашего примера каталога, звучит как хорошая идея. Вы можете найти некоторые примеры go Makefiles здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...