使用 /cmd 结构构建 Go 项目时出错(多个入口点)
Error building Go project with /cmd structure (multiple entry points)
这是我的项目目录结构(~/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
) 运行ning 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
can be only used in the case of single package. Instead you can write a makefile 获取可执行文件以使用单个 make 目标获取所有可执行文件。
关于您看到的错误,我需要更多信息。当我尝试构建示例应用程序时,一切正常。不过我没有使用 GO111MODULE 标志。
go build
给我 Whosebug 可执行文件
go build -o test ./cmd/c
给我 test 可执行文件
go build ./cmd/c
给我 c 可执行文件
为了您的方便,我将项目上传到 github repo
这是我的项目目录结构(~/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
) 运行ning 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
can be only used in the case of single package. Instead you can write a makefile 获取可执行文件以使用单个 make 目标获取所有可执行文件。
关于您看到的错误,我需要更多信息。当我尝试构建示例应用程序时,一切正常。不过我没有使用 GO111MODULE 标志。
go build
给我 Whosebug 可执行文件go build -o test ./cmd/c
给我 test 可执行文件go build ./cmd/c
给我 c 可执行文件
为了您的方便,我将项目上传到 github repo