Skip to content

forewing/gobuild

Repository files navigation

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"},
    },
}