繁体   English   中英

golang从两个不同的文件位置编译相同的软件包

[英]golang compiling the same package from two different file locations

我组织项目的方式类似于以下内容

/workspace
  /src
    /package1
  /vendor
    /src
      /somepackage
      /anotherpackage
      /package1

我的GOPATH设置为/workspace;/workspace/vendor

请注意,这没有使用go 1.5供应商选项。

到目前为止,所有内容都可以在外部构建/开发工作流程中进行编译并正常工作。 我现在处于一种情况下,我想将库导入供应商目录workspace / vendor / src / package1中,但是在workspace / src / package1目录中编写一些单元测试。

运行测试时,无法在供应商目录中的package1中找到方法。

有没有办法像这样将供应商的程序包代码识别到相同的名称空间中?

您是否要实质上在两个不同的gopath中的两个文件夹之间“拆分”软件包的代码? go工具无法执行此操作,因为它占用了gopath中任何文件夹上找到的第一个文件夹。 如果您正在积极地从事一个项目,为什么将它放在供应商的gopath中而不是在src中?

正是由于这样的区别,我通常为所有内容推荐一个gopath。 如果要供应商依赖性,建议对您拥有的每个主软件包都这样做。

正如captncraig所说:go工具无法做到这一点。

但是您可以随意在所需的任何文件集上调用go编译器本身: go tool compile <file.go>...

当然,这将重新引入某种Makefile样式的构建系统。 它是可行的,但是通过go buildgo install完成的所有繁重工作go install丢失,并且必须保留在Makefile中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM