package
0.0.0-20230808054156-8dfdb5b6e844
Repository: https://github.com/mamemomonga/notebook-go.git
Documentation: pkg.go.dev
# README
ベースディレクトリ
- 実行バイナリからの相対位置、go run から実行されている場合はカレントディレクトリを得る
- フォルダがなければ新規に作成する
Makefile
- Makefile で Versionをversionファイルから、RevisionをGitのコミットIDから設定している
- make でダイナミックリンク版が生成される
- make static でスタティックリンク版が作成される
- make multiarch でマルチアーキテクチャ スタティックリンク版が生成される
- スタティックリンク版ではCGOは使用できない
basedir.GetRel(rel string)
メモ
- 実行バイナリは os.Args[0] か os.Executable() で取得できる。
- go run の場合、実行バイナリはテンポラリディレクトリ以下に、最初に見つかったgoファイルの名前を付けて作成される。
実行
Makefileのある位置から実行した場合、すべてBasedirが同じになっていればOK
$ go run ./basedir
2019/06/24 12:15:04 Version: Revision:
2019/06/24 12:15:04 Basedir: (略)/notebook-go/basedir
2019/06/24 12:15:04 Mkdir: (略)/notebook-go/basedir/var
$ make clean && make && bin/basedir
rm -rf bin var
go build -a -ldflags="-s -w -X 'main.Version=v0.0.1' -X 'main.Revision=b9395c6'" -o bin/basedir
2019/06/24 12:15:46 Version: v0.0.1 Revision: b9395c6
2019/06/24 12:15:46 Basedir: (略)/notebook-go/basedir
2019/06/24 12:15:46 Mkdir: (略)/notebook-go/basedir/var
$ make clean && make static && bin/basedir
rm -rf bin var
CGO_ENABLED=0 go build -a -tags netgo -installsuffix netgo -ldflags="-s -w -X 'main.Version=v0.0.1' -X 'main.Revision=b9395c6' -extldflags '-static'" -o bin/basedir
2019/06/24 12:17:42 Version: v0.0.1 Revision: b9395c6
2019/06/24 12:17:42 Basedir: (略)/notebook-go/basedir
2019/06/24 12:17:42 Mkdir: (略)/notebook-go/basedir/var
参考
https://stackoverflow.com/questions/37932551/mkdir-if-not-exists-using-golang
# Packages
動作デモ
Usage
go run ./cmd/
*/.
# Functions
GetRel ベースディレクトリからの相対位置から絶対位置を得る
Versionが空である
Makefileから生成されていないため、go run や go build で実行されている可能性がある。
その場合、カレントディレクトリから OffsetFromWd 分移動し、rel分移動し、その絶対パスを返す。
Versionに値がある
Maikefileから生成されている。
その場合、実行バイナリから OffsetFromBin 分移動し、rel分移動し、その絶対パスを返す。
*/.
# Variables
AppVersion アプリケーションバージョン go run, go build からの直接実行の場合は空欄.
OffsetFromBin 実行バイナリからベースディレクトリへの相対位置.
OffsetFromWd カレントディレクトリからベースディレクトリへの相対位置.