我有一个使用CFLAGS for cgo链接到C库的Go包。反过来,C库需要本地数据文件才能正常工作。它是预先构建的3d-party库和设置数据文件路径的选项不可用。
如果包的客户端是本地的并且数据是由lib加载的,那么一切都按预期工作,但是当我构建&安装包,不复制数据文件。
安装软件包时是否有选项可以将自定义文件放在go包附近?
答案 0 :(得分:0)
安装软件包时是否有选项可以将自定义文件放在go包附近?
不,没有。抱歉。这必须通过系统包管理器等其他方式解决。
答案 1 :(得分:0)
我建议使用https://github.com/jteeuwen/go-bindata工具将该依赖项编译到主Go二进制文件中。这样,您就可以在单个二进制文件中存储多个文件(针对不同的操作系统),并在运行时选择正确的文件。我在几个项目中使用它 - 没有发现这种方法有任何问题。
go-bindata -o output_file.go input_data_directory/
然后访问它:
data, err := Asset("some_important_file")
if err != nil {
// Asset was not found.
}
因此,当您启动应用程序时 - 只需将文件从内部资产复制到应用程序所期望的路径。我希望有所帮助。