![]() | 1 justseemore 2021-03-29 16:36:02 +08:00 docker ? |
![]() | 2 cheneydog 2021-03-29 16:38:35 +08:00 goland + gomod |
![]() | 3 ouyc OP |
![]() | 4 2379920898 2021-03-29 17:05:46 +08:00 bee run 原生 就 go build |
![]() | 5 zhengxiaowai 2021-03-29 17:11:57 +08:00 go build ?????没懂楼主的意思。。 交叉编译的话可以指定 GOARCH |
![]() | 6 raaaaaar 2021-03-29 17:13:23 +08:00 via Android 我也没懂,go build 不行吗? |
![]() | 7 huobazi 2021-03-29 17:14:57 +08:00 wsl 里玩呗 |
![]() | 9 XIU2 2021-03-29 17:30:35 +08:00 Golang ?我都是直接写个简单的 bat 脚本,自动配置临时环境变量来编译不同平台 /系统的二进制版本。 脚本内容示例(只写了两个,其他平台 /系统同理): @echo off set version=v1.0.0 cd .. echo "ABC_linux_386..." SET CGO_ENABLED=0 SET GOOS=linux SET GOARCH=386 go build -o Releases\ABC_linux_386 -ldflags "-s -w -X main.version=%version%" echo "ABC_windows_amd64..." SET CGO_ENABLED=0 SET GOOS=windows SET GOARCH=amd64 go build -o Releases\ABC_windows_amd64.exe -ldflags "-s -w -X main.version=%version%" 如果是文件夹的话,再搭配一个自动压缩包的脚本就行了(或者合并到一个脚本中)。 脚本中的 main.version=%version% 是编译时写入版本号,可以删除。 |
10 selfeasy 2021-03-29 17:33:27 +08:00 makefile 中的命令 一条一条的在编辑器控制台执行 |
11 noroot 2021-03-29 17:37:13 +08:00 make 是自动化构建工具,不是编译器。 go 现在用 go mod 管理依赖,go build 执行构建。 所以你的需求是什么? |
![]() | 12 XIU2 2021-03-29 17:38:57 +08:00 刚回复完就看到你刚发的附言。。。 我只是业余自学自给自足写一些小软件,没折腾过依赖多的项目,所以你的需求我也不懂~ |
13 Jirajine 2021-03-29 17:39:55 +08:00 via Android go 本身的工具链比较完善,make 也就用来方便一下多平台构建、定义常量等情况,所以 Windows 下继续使用 make 也完全没问题。 |
14 thevita 2021-03-29 17:40:17 +08:00 你需要的是 `go generate` |
![]() | 15 JackyCDK 2021-03-29 17:41:35 +08:00 使用 wsl2 (混乱邪恶 |
16 thevita 2021-03-29 17:41:58 +08:00 硬要用 make 的话, ms 的工具链里有 nmake, 不过要单独安装 |
![]() | 17 BeautifulSoap 2021-03-29 17:42:00 +08:00 lz 你这个需求,不是很复杂的话,为什么不考虑使用 go generate 呢? 如果需求复杂的话其实还不如用 docker,因为你同时维护两个平台的 makefile 是非常耗费心智的 当然,一定想在 windows 下用 make 的话,其实方法也很多,但是核心还是在于,不同平台你的的编译指令会有区别,到头来你还是会回到上面说的维护两个平台各自的 makefile 上了 |
![]() | 18 HanMeiM 2021-03-29 17:52:59 +08:00 我也没懂,意思是 go 在 windows 上还不能直接跑 go build ? |
![]() | 19 zliea 2021-03-29 18:15:19 +08:00 cygwin/mingw ? |
![]() | 20 thet 2021-03-29 18:31:49 +08:00 go build |
![]() | 21 ouyc OP @BeautifulSoap @thevita 可以,研究下这个。 @ztechstack mingw 这个试了要从 / 找文件,windows 鬼来的 / 目录。如果把 / 这些目录配好,感觉还不如跑 wsl |
22 dongtingyue 2021-03-29 18:32:35 +08:00 go get -u github.com/golang/protobuf/protoc-gen-go export PATH=$PATH:$GOPATH/bin protoc -I routeguide/ user.proto --go_out=plugins=grpc:routeguide 运行命令后会在 routeguide 目录下生成 user.pb.go 文件 -I 指定导入目录可以指定多次 |
![]() | 23 ouyc OP |
25 imjamespond2020 2021-03-29 18:48:56 +08:00 via Android ![]() cmake 了解下? |
26 ljpCN 2021-03-29 18:51:09 +08:00 make for Windows |
![]() | 27 jasonkayzk 2021-03-29 19:00:01 +08:00 ![]() “go 编译就用 go 自带的编译器;” 想用 make 就下 cygwin 或者 mingw 自己配置 path ; windows 下有自己的 nmake,通过 Visual Studio 下载即可; 想要在 windows 下编译 proto 文件,可以下载 win 平台对应的插件或者自己编译加 path ; 使用 make 和你是不是 go 、以及 Go 怎么编译没有必然联系; 想了解 Go 怎么编译,可以去看《编译原理》,从生成 AST 开始学习; 总结:文不对题,不知所云; |
28 fenghuang 2021-03-29 19:12:36 +08:00 via Android 习惯写 shell 脚本,用 git 执行 |
![]() | 29 ouyc OP @fenghuang git bash 吗?目前没试过,在 GoLand 中你是怎么使用的,是配一个 git bash terminal 执行吗 |
![]() | 30 feelinglucky 2021-03-29 19:35:24 +08:00 兄弟可以看下这个 https://taskfile.dev/ |
32 neoblackcap 2021-03-29 20:11:30 +08:00 本质上不就是跨平台构建嘛,搜构建工具一大把。cmake, xmake 都可以,无非就是看你自己喜欢写什么脚本。类 bazel 的都一大把,动手搜搜就好了。 |
![]() | 33 Reficul 2021-03-30 00:27:50 +08:00 via Android bee run 还行,真就是 beego 开发了咩。。 还是直接 wls 写 shell 比较靠谱? |
![]() | 34 2379920898 2021-03-30 08:48:15 +08:00 beego 自带的一款自动编译工具。 |
35 sxfscool 2021-03-30 08:51:58 +08:00 bee run 笑了 |
![]() | 36 CNife 2021-03-30 09:40:27 +08:00 其实 Windows 下是有 GNU Make 的,不嫌麻烦可以自己用 MinGW 编译一个,嫌麻烦可以用 scoop 装别人编译好的。 如果 Makefile 里没有涉及 Linux/GNU 下的命令,直接就能运行,如果有的话建议直接上 MinGW 。 |
![]() | 37 abersheeran 2021-03-30 11:23:22 +08:00 powershell7 跨平台 |