LoginSignup
9
9

More than 5 years have passed since last update.

ソースを実行ファイルに埋め込む方法

Last updated at Posted at 2015-11-21

C# - ソースを実行ファイルに埋め込む方法 - Qiita
http://qiita.com/ymko/items/7cf9a19e03ba9dcebfaa
のgolang版

ツールの準備

$ go get -u github.com/jteeuwen/go-bindata/...
$ which go-bindata
~/.go/bin/go-bindata

ソースの準備

  • data/以下ハードリンクして置いておくことがミソ
  • build -o で出力ファイル名を指定
  • 再帰的にやるにはどうしよう・・・
$ cat main.go
package main

import (
        "log"
        "fmt"
)

//go:generate go-bindata data/
//go:generate go build -o srcres

func main () {

        data, err := Asset("data/main.go")
        if err != nil {
                // Asset was not found.
                log.Fatalln(err)
        }

        fmt.Println(string(data))
}
$ mkdir data
$ ln main.go data/

コンパイル&実行

$ go generate
$ ./srcres

デバッグ実行

  • デバッグ実行する場合はAsset()を呼べるようにbindata.goも指定しないといけない
$ go run main.go
# command-line-arguments
./main.go:13: undefined: Asset
$ go run bindata.go main.go

参考

go-bindata でコンパイル時にリソースを埋め込んじゃおう! - Qiita
http://qiita.com/ikawaha/items/c02d84cfd00f8f442500

アセット的なアレを実行バイナリ内に入れる話。
http://blog.satotaichi.info/one-binary-using-go-bindata/

go-bindataをgo:generateで実行する - きょこみのーと
http://kyokomi.hatenablog.com/entry/2015/01/17/211502

9
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9