英文:
Building Golang project properly
问题
我有一个项目结构,看起来像这样:
我计划只使用一个 shell 脚本(build.sh)来设置 GOPATH 并构建项目。
我不确定如何正确构建一个 Golang 项目,我短期目标只是构建 src 目录中的包,并将二进制文件放入 bin 目录。
我不确定 go build 命令能否实现这一点,我尝试了一些方法。
所以首先我的问题是 - 这个项目结构合理吗?其次,我如何将我的 src 目录编译到 bin 目录?
我的尝试给我以下错误:
can't load package: package .: no buildable Go source files in /home/oleg/WebstormProjects/oresoftware/stack-server
所以我认为我需要告诉 Go 在 src
目录中查找,因为 Go 只会在项目根目录中查找 .go 文件,但我不确定如何做到这一点。
如果有关系的话,main.go 文件的包名是 "main"。
英文:
I have a project structure that looks like so:
I was planning on just using a shell script (build.sh) to set GOPATH and build the project.
I am not sure how to build a Golang project properly, my short term goal is to just to build the packages in the src directory and put the binaries into the bin directory.
I am not sure what go build command can do that, I have tried a few things.
So first my question is - is this a reasonable project structure and second, how can I compile my src directory to bin?
What I have gives me the following error:
can't load package: package .: no buildable Go source files in /home/oleg/WebstormProjects/oresoftware/stack-server
So I believe I need to tell Go to look in the src
directory, because Go is only looking for .go files in the project root, but I am not sure how to do that.
If it matters, the main.go file has a package name of "main".
答案1
得分: 3
以下是翻译好的内容:
GOPATH=$PROJECT_DIR && cd $PROJECT_DIR && go install main
同时将你的 main.go 文件移动到 src/main/main.go。
这将生成一个 bin/main 可执行文件。
如果你想要构建多个可执行文件,你需要将每个 main.go 文件放入单独的文件夹/包中。生成的可执行文件的名称取自文件所在的目录名。main.go 文件的包名必须始终为 main,以便创建一个二进制文件。
要编译多个可执行文件,你需要使用:
GOPATH=$PROJECT_DIR && cd $PROJECT_DIR && go install ...
...
匹配所有的文件夹/包。
英文:
GOPATH=$PROJECT_DIR && cd $PROJECT_DIR && go install main
Also move your main.go file into src/main/main.go.
This will produce a bin/main executable.
If you have multiple executables you wanna build, you have to put each main.go file into a separate folder/package. The name of the generated executable is taken from the directory name the file is inside. The package name of the main.go files must always be main if it should create a binary.
To compile multiple executables you have to use:
GOPATH=$PROJECT_DIR && cd $PROJECT_DIR && go install ...
The ...
matches all folders/packages.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论