【问题标题】:Is it possible use Go build with extra build steps?是否可以通过额外的构建步骤使用 Go 构建?
【发布时间】:2014-12-10 14:02:10
【问题描述】:

当 go build 不够用,需要在 go build 的同时运行额外的命令怎么办? Go 工具是否涵盖了这个用例?如果是这样,约定是什么?

我注意到可以传递额外的标志来构建工具:

//#cgo pkg-config: glib-2.0 gobject-2.0 etc etc
import "C"

是否可以运行额外的命令或至少告诉 go build 使用 Makefile?

【问题讨论】:

    标签: build go


    【解决方案1】:

    没有。 go 工具并不是一个通用的构建系统。为 cgo 做了一些规定(如 pkg-config),但它不可扩展。

    在 go1.4 中会有generate command。这将允许您运行任意命令来预处理源文件,但它始终必须是显式运行的单独步骤。您不能将其挂接到 go getgo buildgo install

    许多需要更复杂构建的项目使用脚本或 Makefile,并避开通用能力 go get。然而,库包应该努力成为get-able,以简化依赖解析。

    【讨论】:

    • 太好了,无法使用 makefile 覆盖 go build。不过,Go generate 似乎很有希望。
    【解决方案2】:

    我不相信你可以添加额外的步骤。

    pkg-config 是内置构建系统的特殊关键字。

    通常,更复杂的构建是通过在适当的步骤调用 go build 的 makefile 完成的。

    【讨论】:

    • 但是如果用户 go get 一个需要运行 Makefile 的包会发生什么?
    • go get 在这种情况下不会真正起作用。有几个包你必须 git clone 并运行 make 来安装它们。
    猜你喜欢
    • 1970-01-01
    • 2020-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    相关资源
    最近更新 更多