>백엔드 개발 >Golang >최상위 `cmd` 폴더 없이 여러 Go 패키지 바이너리를 동시에 빌드하는 방법은 무엇입니까?

최상위 `cmd` 폴더 없이 여러 Go 패키지 바이너리를 동시에 빌드하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-02 22:49:29721검색

How to Build Multiple Go Package Binaries Simultaneously Without a Top-Level `cmd` Folder?

동시에 여러 Go 패키지 바이너리 빌드

질문은 최상위 수준 사용에 대한 기본 조언으로 여러 패키지 바이너리를 동시에 빌드하는 것에 관한 것입니다. cmd 폴더가 작동하지 않는 것 같습니다. 제공된 코드 예제는 특정 바이너리를 올바르게 빌드할 수 있는 특정 폴더 구조를 보여줍니다.

go build 명령을 사용하여 한 단계로 모든 바이너리를 빌드하려면 다음 변형을 권장합니다.

cd $GOPATH/someProject
for CMD in `ls src/cmd`; do
  go build ./src/cmd/"$CMD"
done

이 명령은 src/cmd 디렉터리의 패키지를 반복하고 각 패키지를 개별적으로 빌드합니다. 결과 바이너리는 해당 패키지 디렉터리에 저장됩니다.

또는 바이너리를 $GOPATH/bin에 설치하지 않으려면 스크립트를 사용할 수 있습니다. 이는 빌드 스크립트가 여러 바이너리 생성을 처리하는 오픈 소스 프로젝트에서 일반적인 관행입니다.

다음 예제 스크립트를 사용할 수 있습니다.

cd $GOPATH/someProject
for CMD in `ls cmd`; do
  go build ./cmd/$CMD
done

이 스크립트는 cmd의 패키지를 반복합니다. 디렉토리와 실행은 각각 빌드됩니다. 결과는 해당 cmd 패키지 디렉토리에 저장된 바이너리 세트입니다.

자세한 내용을 보려면 다음 인기 프로젝트에서 빌드 스크립트의 예를 제공합니다.

  • Grafana: https:// github.com/grafana/grafana/blob/master/build.go
  • 토러스: https://github.com/coreos/torus/blob/master/Makefile
  • 캐디: https: //github.com/mholt/caddy/blob/master/dist/automate.go

위 내용은 최상위 `cmd` 폴더 없이 여러 Go 패키지 바이너리를 동시에 빌드하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.