Buduję bibliotekę, ale chcę również, aby była ona użyteczna jako samodzielny plik binarny.Czy mogę mieć bibliotekę i plik binarny o tej samej nazwie?
Na przykład, powiedzmy, że buduję implementację Tar. Tar jest powszechnie używany jako polecenie, ale może być również używany jako biblioteka. Intuicyjnie, zrobiłbym coś takiego:
src/
tar/
tar.go # belongs to package tar
main.go # imports tar and provides a main function
To jednak nie działa. Z wersji documentation wynika, że "polecenia" powinny mieć oddzielną nazwę od biblioteki. Adaptacja przykład podany jest na tym przykładzie, mam następującą strukturę katalogów:
src/
tar/
tar.go # belongs to package tar
tarbin/
main.go # imports tar and provides a main function
Jednak ta tworzy polecenie o nazwie tarbin
, nie tar
w $GOPATH/bin
. Obejście, które znalazłem, to wykonanie go build -o $GOPATH/bin/tar tar
, ale mam wrażenie, że robię coś okropnie nie tak. Czy istnieje lepszy sposób?
Uwaga: Mam świadomość, że tar
jest zawarty w standardowych bibliotekach, używam go tylko jako przykładu.
Awesome! Podoba mi się to znacznie lepiej niż moje 'go build -o ...' hack ... – tjameson
Z wyjątkiem "go build" nie powiedzie się, ponieważ twój plik binarny nazwałby to samo, co katalog lokalny ("tar"). Musisz użyć "go-build" w tym przypadku. – Gravis
@Gravis Widzę, co masz na myśli. Jednak "go install" jest tym, czego chcesz użyć do budowania binarnego - prawie nigdy nie używaj 'go build', ponieważ nie buforuje kompilacji. Zmienię odpowiedź, aby usunąć odniesienie do 'go build'. –