【发布时间】:2014-02-13 18:44:29
【问题描述】:
我有一个非常简单的 Go 项目,我正在尝试对其进行重组,使其遵循正常的 Go 项目结构(因此我可以运行 go build)。
我目前有两个源文件,都带有package main。所有文件,包括我的程序在运行时需要的一些文本配置文件。
所以现在,它看起来像:
<project_name>
- main.go
- source2.go
- config_file.txt
当我在这个目录中时,我可以运行go build,它会创建一个二进制文件(名为<project_name>。这工作正常,但我想设置它以更好地遵循 Go 标准包结构(以便 Intellij IDEA 将其识别为有效项目)。
现在,我在 Git 中有整个 project_name> 目录,我想保持这种状态。
我尝试将源文件放在名为src 的文件夹中,但随后go build 说没有任何源文件要编译。
我应该如何构建它?
编辑:
解决了将东西放入 src/ 的问题:我需要运行 go build <project_name>。
我仍然想知道是否有办法在没有全局 GOPATH 的情况下设置项目。我将所有项目都放在一个文件夹下,每个项目都有一个子文件夹(并非所有项目都是 Go 项目)。我想保留那个系统。
我想要的是:
projects/
- project 1/
- src/
- bin/
- pkg/
- project 2/
- src/
- bin/
- pkg/
然后我希望能够运行go build <project_name>(当我在该项目的目录中时)并让它编译该项目。这可能吗?
【问题讨论】:
-
请注意,您始终可以将
GOPATH指定为可能也存在非 Go 项目的目录。 Go 会忽略它们。 -
对,但我不想为我所有的 Go 项目都拥有一个通用的 src 文件夹。
-
这很正常:src/
/ 是go get的运作方式。不要认为src文件夹包含一堆代码:它只是包源代码的集合(而不是二进制文件或头文件)。我的 GOPATH 包含一堆github.com/user/文件夹,用于我下载的不同包,还有一堆code.google.com/project文件夹,用于我下载的其他包,当然还有我自己的项目。通过将我自己的项目符号链接到更易于访问的地方,我使这变得更容易了,而不必弄乱我的 GOPATH。
标签: go