Импортируемый пакет не имеет .mod файла. Как использовать этот пакет?
У меня go23
Я оформляю свои программы в виде go-модуля.
Однако, в одной из моих программ, потребовалось импортировать пакет github.com/lxn/walk.
Этот пакет не имеет go.mod файла так как был написан до введения модулей в golang.
Обычный go get
и go get -u
его скачивают, но добавить в мой проект не дают.
Как я могу использовать этот пакет в своем проекте? Как правильно его испортировать?
когда пытаюсь собрать именно пример из README то получаю
package github.com/udonetsm/test
imports github.com/lxn/walk: build constraints exclude all Go files in /home/active/go/pkg/mod/github.com/lxn/[email protected]
В то время как сожержимое /home/active/go/pkg/mod/github.com/lxn/[email protected]
на первом скриншоте
Ответы (1 шт):
Судя по скриншотам, вы работаете в Линуксе. Библиотека github.com/lxn/walk
предназначена исключительно для Windows, во всех исходниках стоит тег сборки
// +build windows
то есть файл включается в сборку только если выставлен тег windows
.
Вам нужно собирать приложение Windows:
GOOS=windows GOARCH=amd64 go build
Я проверил с приложением из README - собирает EXE файл. Запустить, разуемеется, не получается, так как это виндовый исполнимый файл ))
Дабы компилятор в VSCODE не ругался, надо в файл .vscode/settings.json
добавить :
"go.toolsEnvVars": {
"GOOS": "windows",
"GOARCH": "amd64"
}
Команда go build -tags windows
не сработает, так как по этому тегу подтянутся исходники из стандартной библиотеки, и возникнут кучи конфликтов с дубликатами имён, например
/usr/local/go/src/internal/goos/zgoos_windows.go:7:7: GOOS redeclared in this block
/usr/local/go/src/internal/goos/zgoos_linux.go:7:7: other declaration of GOOS
Поэтому только GOOS=windows
, только кросс-компиляция.