gpt4 book ai didi

go - 使用/cmd 结构构建 Go 项目时出错(多个入口点)

转载 作者:数据小太阳 更新时间:2023-10-29 03:19:16 27 4
gpt4 key购买 nike

这是我的项目的目录结构(~/go/src/bitbucket.org/a/b):

├── cmd
│   ├── c
│   │   └── main.go
│   └── d
│   └── main.go
├── config
│   ├── config.go
│   ├── default.json
│   └── development.json
├── go.mod
├── go.sum
├── log
│   └── log.go
├── main.go

我需要编译 2 个二进制文件(cmd/中的每个模块一个)。

我尝试从项目根目录 (~/go/src/bitbucket.org/a/b) 运行 GO111MODULE=on go build ./cmd/c。它什么都不做就默默地结束了。

我还尝试运行 GO111MODULE=on go build -o test ./cmd/c。它创建了 29kb 的 test 文件。当我向它添加执行权限并运行时,它以错误结束:

./test: 2: ./test: Syntax error: newline unexpected

我试过使用 go 1.12.5 和 go 1.11.10。此外,当我将任何 cmd 目录中的 main.go 文件放入项目根目录并构建时,编译器构建它就很好(二进制文件大小为 ~33mb)。

是否可以在单个项目中使用 2 个编译器入口点?

最佳答案

你可以使用 go install ./... 如果你想获取可执行文件,它将在 $GOPATH/bin 目录中创建可执行文件

关于多个编译器入口点,您可以。您可以使用 go build ./cmd/c ./cmd/d . 进行构建,但您无法按照 GO Documentation 获取可执行文件-o 只能在单包的情况下使用。相反,你可以写一个 makefile使用单个 make 目标获取所有可执行文件。

关于您看到的错误,我需要更多信息。当我尝试构建示例应用程序时,一切正常。不过我没有使用 GO111MODULE 标志。

enter image description here

  1. go build 给我 stackoverflow 可执行文件
  2. go build -o test ./cmd/c 给我 test 可执行文件
  3. go build ./cmd/c 给我 c 可执行文件

为了您的方便,我将项目上传到github repo

关于go - 使用/cmd 结构构建 Go 项目时出错(多个入口点),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56509105/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com