登录
首页 >  Golang >  Go问答

使用 dep 运行 go vet 时找不到头文件

来源:stackoverflow

时间:2024-03-30 09:12:32 244浏览 收藏

Golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《使用 dep 运行 go vet 时找不到头文件》带大家来了解一下##content_title##,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发!


问题内容

在我的项目中使用供应商的依赖项运行 go vet 时,我收到此错误。

$ go vet ./...
# /vendor/github.com/ethereum/go-ethereum/crypto/secp256k1
vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/curve.go:42:10: fatal error: libsecp256k1/include/secp256k1.h: No such file or directory
 #include "libsecp256k1/include/secp256k1.h"

我以为这是开发环境中缺少的依赖项,但是当查看原始项目源时,包含路径是相对于源文件的。

为什么找不到文件?


解决方案


go 的一些依赖管理工具不提供项目引用的所有代码。这意味着在某些情况下,可以在 cgo 的 go 文件中使用的 c 代码不会包含在供应商目录中。

我使用两个单独的供应商工具两次遇到此问题,但有工作可以支持这些 use cases

到目前为止我发现的最简单的方法是使用govendor,然后导入完整的目录以确保所有需要的文件都在那里。这是一个非常简单的解决方案,忽略了在 go 项目中包含 c 依赖项的许多复杂性,但修复了问题,但没有永久解决该问题。

go get github.com/kardianos/govendor
govendor init
govendor add +e
# remove the directory that is missing the c dependencies
rm -rf ./vendor/github.com/ethereum/go-ethereum/crypto/secp256k1/
# add the file and include all files
# https://github.com/kardianos/govendor/issues/247
govendor add github.com/ethereum/go-ethereum/crypto/secp256k1/^

gopkg.toml 中您可以添加

[prune]
  go-tests = true
  unused-packages = true
  non-go = true

  [[prune.project]]
    name = "github.com/ethereum/go-ethereum"
    non-go = false
    unused-packages = false

以上就是《使用 dep 运行 go vet 时找不到头文件》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>