登录
首页 >  Golang >  Go问答

构建 Go 项目时使用/cmd目录结构报错:有多个入口点

来源:stackoverflow

时间:2024-02-28 09:42:23 288浏览 收藏

今天golang学习网给大家带来了《构建 Go 项目时使用/cmd目录结构报错:有多个入口点》,其中涉及到的知识点包括等等,无论你是小白还是老手,都适合看一看哦~有好的建议也欢迎大家在评论留言,若是看完有所收获,也希望大家能多多点赞支持呀!一起加油学习~

问题内容

这是我的项目的目录结构(~/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。 另外,当我将 main.go 文件从任何 cmd 目录放入项目根目录并构建时,编译器会很好地构建它(二进制文件大小约为 33mb)。

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


解决方案


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

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

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

  1. go build 为我提供了 stackoverflow 可执行文件
  2. go build -o test ./cmd/c 为我提供了 test 可执行文件
  3. go build ./cmd/c 为我提供了 c 可执行文件

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

本篇关于《构建 Go 项目时使用/cmd目录结构报错:有多个入口点》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

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