跨平台 go 编译控制 |
您所在的位置:网站首页 › golang跨平台 › 跨平台 go 编译控制 |
在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 |