/gobuild

Tools for building and distributing Go executables

Primary LanguageGoMIT LicenseMIT

Go Build Tools

Go Report Card GitHub release (latest by date) PkgGoDev

Tools for building and distributing Go executables

Examples

Directly Use

example/purego

target := gobuild.Target{
    Source: "./example/payload",

    OutputName: fmt.Sprintf("payload-%s-%s-%s",
        gobuild.PlaceholderVersion,
        gobuild.PlaceholderOS,
        gobuild.PlaceholderArch),

    OutputPath:  "./output",
    CleanOutput: true,

    ExtraLdFlags: "-s -w",

    VersionPath: "main.Version",
    HashPath:    "main.Hash",

    Compress:  gobuild.CompressZip,
    Platforms: gobuild.PlatformCommon,
}

err := target.Build()
if err != nil {
    panic(err)
}

Config File

example/config

{
    "Go": "",
    "Source": "./example/payload",
    "OutputName": "payload-{Version}-{OS}-{Arch}",
    "OutputPath": "./output",
    "CleanOutput": true,
    "Cgo": false,
    "ExtraFlags": null,
    "ExtraLdFlags": "-s -w",
    "VersionPath": "main.Version",
    "HashPath": "main.Hash",
    "Compress": "auto",
    "PlatformShortcut": "common",
    "Platforms": [
        {
            "Arch": "riscv",
            "OS": "linux"
        }
    ]
}
target, err := gobuild.GetTargetFromJson("./config.json")
if err != nil {
    panic(err)
}
err = target.Build()
if err != nil {
    panic(err)
}

CGO

target = gobuild.Target{
    Platforms: []gobuild.Platform{
        {OS: gobuild.OSLinux, Arch: gobuild.ArchAmd64, CC: "gcc"},
        {OS: gobuild.OSWindows, Arch: gobuild.ArchAmd64, CC: "x86_64-w64-mingw32-gcc"},
    },
}