Menu

메모용 개발 블로그

전체보기 > Develop > Go >

Go Window 아이콘 적용 (syso)

2022-12-12 22:29:12

서론

Go에서 윈도우 아이콘을 적용하는 방법을 정리해보고자 한다.

아이콘 외에도 각종 리소스를 포함하는 것도 가능하고, 프로그램에 정보를 담는 것도 가능하다.

이 글에서는 프로그램을 설치해서 커맨드라인 명령어로 적용하는 것이 아닌 패키지를 프로젝트에 포함 한 뒤 설정을 소스코드로 작성한 다음 이를 실행하여 syso파일을 생성하는 방식으로 수행할 것이다.

본론

1. 패키지

이 글에서 아이콘 적용을 위해서 사용할 패키지는 다음과 같다.

https://github.com/tc-hib/winres

다음 명령어로 프로젝트에 포함시킨다.

go get github.com/tc-hib/winres

그 다음 원하는 이름의 go 파일을 만들고 아래 코드를 작성한다.

//go:build ignore
package main

import (
	"github.com/tc-hib/winres"
	"image"
	"log"
	"os"
)

func main() {
	rs := winres.ResourceSet{}

	f, err := os.Open("아이콘 이미지 파일 경로")
	if err != nil {
		log.Fatalln(err)
	}
	img, _, err := image.Decode(f)
	if err != nil {
		log.Fatalln(err)
	}

	icon, _ := winres.NewIconFromResizedImage(img, nil)

	// Add the icon to the resource set, as "APPICON"
	rs.SetIcon(winres.Name("APPICON"), icon)

	out, _ := os.Create("project_name_windows_amd64.syso")
	rs.WriteObject(out, winres.ArchAMD64)
}

그 다음 해당 파일을 프로젝트 루트 경로에서 go run 명령어로 실행해주면 syso파일이 생성된다.

그 이후 go build 명령을 통해서 빌드하면 자동으로 인식하여 적용되어 컴파일된다.

주의 사항으로는 go build 명령에 특정 파일명을 명시하는 식으로 빌드를 진행하게 되면 syso파일이 빌드대상에 있지 않으므로 포함되지 않고 컴파일된다.