为什么建设什么都不做?

时间:2018-02-02 21:22:50

标签: go

我在工作中遇到了一个奇怪的问题。

我有一个项目。在这个项目中有两个包,每个包在自己的文件夹中。每个文件夹都包含属于该软件包的各种.go文件。

在文件夹A中,如果我说go build -v,我会得到它正在构建的内容列表。

在文件夹B中,如果我说go build -v,我会立即返回而没有输出。

这两个文件夹只包含.go个文件,并且没有容易识别的原因,它为什么在一个文件中构建代码而在另一个文件中不构建任何内容。

go version返回go version go1.7.5 linux/amd64

我如何在世界上弄清楚这里发生了什么?

编辑:澄清评论中提出的问题:

两个文件夹中都没有package main。在文件夹A中,go install会在.a下的相应位置生成$GOPATH/pkg个文件。在文件夹B中,go install没有。它无所事事,无声无息。这里有些东西合法出错。

评论中建议的补救措施包括使用-a标记(错误输出似乎完全不相关的内容)并使用-x标记。 -x标志应该提供非常详细的输出,而不是无用的,输出单行引用构建终止后不存在的临时文件,例如WORK=/tmp/go-build026498757

3 个答案:

答案 0 :(得分:1)

您可能已经在gopath中安装了最新的版本。这可能意味着您之前在该特定包上执行了类似于go install的操作,并且尚未修改目录中的任何文件。

检查Go的pkg目录中是否有相应的*.a库,看看它上面的修改时间戳是否晚于源文件的时间戳。

答案 1 :(得分:1)

您提到构建终止后临时目录消失了。

您可以使用 -work 标志保留这些目录。

来自go help build

The build flags are shared by the build, clean, get, install, list, run, and test commands:

...

    -work
            print the name of the temporary work directory and
            do not delete it when exiting.

这应该有助于提供有关正在发生和未发生的事情的更多信息和背景。

答案 2 :(得分:0)

我认为go build的结果被编辑器隐藏了。(文件树)

我使用的是vscode。
vscode隐藏第一个字符为“。”的文件。
如果您移至src目录并在终端中输入data want; set '2020data'n '2019data'n ; run;