2022-12-12 22:29:12
Go에서 윈도우 아이콘을 적용하는 방법을 정리해보고자 한다.
아이콘 외에도 각종 리소스를 포함하는 것도 가능하고, 프로그램에 정보를 담는 것도 가능하다.
이 글에서는 프로그램을 설치해서 커맨드라인 명령어로 적용하는 것이 아닌 패키지를 프로젝트에 포함 한 뒤 설정을 소스코드로 작성한 다음 이를 실행하여 syso파일을 생성하는 방식으로 수행할 것이다.
이 글에서 아이콘 적용을 위해서 사용할 패키지는 다음과 같다.
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파일이 빌드대상에 있지 않으므로 포함되지 않고 컴파일된다.