Использование gomake / gotest для пакета с внешними зависимостями - PullRequest
1 голос
/ 06 сентября 2011

У меня есть следующий пакет Makefile:

include ${GOROOT}/src/Make.inc

TARG=gorilla.googlecode.com/hg/gorilla/mux

GOFILES=\
        doc.go\
        mux.go\

DEPS=\
        gorilla.googlecode.com/hg/gorilla/context

include ${GOROOT}/src/Make.pkg

Я изменил TARG и DEPS сегодня, чтобы указать на репозиторий кода Google, как показано выше, следуя этому совету .

Проблема в том, что я могу установить пакет, и он установит зависимость, но я больше не могу использовать gotest или gomake; Я получаю следующую ошибку (используя Go r59):

moraes@yukon:~/dev/repos/gorilla/gorilla/mux$ gotest
rm -f _test/gorilla.googlecode.com/hg/gorilla/mux.a
make -C gorilla.googlecode.com/hg/gorilla/context install
make: *** gorilla.googlecode.com/hg/gorilla/context: No such file or directory.  Stop.
make: *** [gorilla.googlecode.com/hg/gorilla/context.make] Error 2
gotest: "/home/moraes/dev/repos/go/go.r59/bin/gomake testpackage GOTESTFILES=mux_test.go" failed: exit status 2

Сначала я попытался установить зависимость (goinstall gorilla.googlecode.com/hg/gorilla/context), и она корректно устанавливается в $ GOROOT / pkg, но такая же ошибка возникает с gotest / gomake.

Я думаю, что упускаю что-то довольно простое. Как мне перейти к использованию gomake / gotest с Makefile выше? Это должно работать вообще, или я должен использовать другой для разработки?

Ответы [ 2 ]

1 голос
/ 31 октября 2011

goinstall вообще не использует Makefile. Вместо этого он будет анализировать зависимости напрямую из ваших файлов .go.

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

import (
  gorilla_context "gorilla.googlecode.com/hg/gorilla/context"
...

gomake автоматически не разрешает зависимости, поэтому вам придется устанавливать их вручную.

Аналогично, для установки исходного кода cgo с помощью goinstall вы можете указать CFLAGS и LDFLAGS в директивах комментариев. например.

/*
#cgo CFLAGS: -I/usr/local/include
#cgo LDFLAGS: -L/usr/local/lib -lzmq
#include <zmq.h>
*/
import "C"
0 голосов
/ 17 сентября 2011

Я думаю, что Makefile пытается найти файл gorilla.googlecode.com/hg/gorilla/context в текущем каталоге.Кроме того, почему вы хотите указать его в файле make, а не импортировать его из Source?

...