跨平台 go 编译控制

您所在的位置:网站首页 golang跨平台 跨平台 go 编译控制

跨平台 go 编译控制

2023-11-13 14:43| 来源: 网络整理| 查看: 265

在Windows下开发, 有时候会用到一些系统库, 因此会用到syscall, 比如最近项目中需要设置Windows控制台窗口标题, 在开发时也考虑到了跨平台的情况, 还特意在代码中加了

if runtime.GOOS != "windows" { }

但时到Linux下编译不过, 因为syscall的接口分不同平台, 有点仅支持Windows.

自然而然想到了go的编译控制: 在文件头加入如下标签:

//+build windows

然后编译的时候添加tag参数

go build -tags="windows"

比如我这里就会存在两个文件 func_windows.go:

//+build windows package global import ( "syscall" "unsafe" ) // 设置cmd窗口标题 func SetCmdTitle(title string) { kernel32, _ := syscall.LoadLibrary(`kernel32.dll`) sct, _ := syscall.GetProcAddress(kernel32, `SetConsoleTitleW`) strUtf16,_ := syscall.UTF16PtrFromString(title) syscall.Syscall(sct, 1, uintptr(unsafe.Pointer(strUtf16)), 0, 0) syscall.FreeLibrary(kernel32) }

和 func_linux.go:

//+build linux package global func SetCmdTitle(title string) { }

这样在不同的平台加各自的标签进行build就可以了, 不会报错.



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3