【发布时间】:2017-11-23 14:46:48
【问题描述】:
我有以下文件 make.sh 正在处理以下项目:
myapp
utils
run.go
auth.go
server.go
make.sh
当我运行 此脚本 时,它会创建 预期的 tar 并且一切正常!
#!/bin/sh
go get ./...
rm -r /tmp/myapp
rm /tmp/myapp.tar.gz
mkdir /tmp/myapp
go build -o /tmp/myapp/myapp_mac
env GOOS=windows GOARH=amd64 go build -o /tmp/myapp/myapp_win64.exe
env GOOS=linux GOARCH=amd64 go build -o /tmp/myapp/myapp
cp -R ./resources /tmp/myapp/
cd /tmp
tar -czf myapp.tar.gz myapp
现在我需要将项目结构更改为以下内容:
myapp
make.sh
src
utils
run.go
auth.go
server
server.go
现在当我运行“make.sh”时出现错误:
can't load package: package myapp: no Go files in /Users/i023333/go/src/myapp
知道如何适应它吗?
我尝试将make.sh 原样放在server folder 中,它会创建tar,但它无效……知道我应该在此处更改脚本 什么以适应新项目结构体?
EDIT1
之前生成的结构如下
tmp
myapp
myapp
myapp_mac
myapp_win64.exe
myapp.tar.gz
在Charles Duffy的答案中尝试了脚本后,我得到了以下内容
tmp
myapp
myapp
myapp_mac
myapp_win64.exe
tar 文件丢失了,知道吗?
【问题讨论】:
-
@Flimzy - 你能告诉我怎么做吗?
-
@Flimzy - 它与代码无关,它只是打包,代码并没有完全一样地改变它,只是项目结构改变了
-
抱歉,问题是,正如错误消息所表明的那样,您的项目目录
myapp现在没有 go 源代码。你不能编译任何东西。尝试编译myapp/util。 -
@Flimzy - 这就是我试图将脚本移动到
server文件夹并且它工作的原因,但我怀疑它没有看到utils文件夹和那里的 go 文件。 ... -
顺便说一句,
env完全没有必要。GOOS=windows GOARH=amd64 go build -o /tmp/myapp/myapp_win64.exe会做同样的事情(仅在单个命令期间设置 GOOS 和 GOARCH 环境变量)。