ThorVG 환경 세팅해보기
공식 튜토리얼이랑 README를 보고 Windows에서 ThorVG를 설치하고, 예제까지 같이 돌려본 기록입니다.
결론부터 말하면 빌드에 성공했고, 예제 62개가 모두 나왔으며, 실제로 창을 띄워서 렌더링까지 확인했습니다. 아래 스크린샷이 그 결과입니다.
한 일 순서
1. meson이랑 ninja부터
문서에 meson + ninja가 필요하다고 명시되어 있어 pip로 설치했습니다.
python -m pip install --user meson ninja
설치는 됐는데 Scripts 경로가 PATH에 안 잡혀서 직접 넣어줘야 했습니다.
$env:Path = "C:\Users\SSAFY\AppData\Roaming\Python\Python312\Scripts;" + $env:Path
2. 컴파일러
원래 MSYS2를 깔아서 MinGW를 쓰려고 했는데, winget으로 설치하다 실패했습니다.
폴더(C:\msys64)만 생기고 bash랑 pacman이 없어서, 포기하고 WinLibs로 넘어갔습니다.
winget install --id BrechtSanders.WinLibs.POSIX.UCRT -e --accept-package-agreements --accept-source-agreements
GCC 16.1이 들어 있는 MinGW가 설치됐고, 이후로는 이걸로 빌드했습니다.
3. SDL2
예제 README에 ThorVG + SDL이 필요하다고 명시되어 있었습니다.
SDL2 MinGW 개발용 패키지를 받아서 .tools에 풀어 두었습니다.
curl.exe -L -o .\.tools\SDL2-devel-2.32.8-mingw.tar.gz `
https://github.com/libsdl-org/SDL/releases/download/release-2.32.8/SDL2-devel-2.32.8-mingw.tar.gz
tar -xzf .\.tools\SDL2-devel-2.32.8-mingw.tar.gz -C .\.tools
여기서 한 번 막혔습니다. sdl2.pc 안에 prefix가 /tmp/tardir/...처럼 이상한 경로로 되어 있었습니다.
실제 경로로 바꿔줘야 pkg-config가 찾았습니다.
4. 환경변수
매번 치기 귀찮아서 setup-env.ps1을 만들어 두었습니다. 새 터미널을 열면 이거부터 실행합니다.
. .\setup-env.ps1
안에 PATH랑 PKG_CONFIG_PATH를 넣어 둔 상태입니다.
ThorVG 빌드
예제랑 맞추려고 loader 전부, gif saver, CAPI를 켰습니다.
설치는 시스템이 아니라 로컬 .tools/prefix로 했습니다.
cd thorvg
meson setup builddir `
--prefix="$PWD\..\.tools\prefix" `
-Dloaders=all `
-Dsavers=gif `
-Dbindings=capi `
-Dstatic=true
ninja -C builddir install
빌드 자체는 잘 됐습니다. Lottie expression 때문에 JerryScript도 같이 컴파일돼서 조금 오래 걸렸습니다.
예제 빌드
cd thorvg.example
meson setup builddir
ninja -C builddir
처음엔 바로 되지 않았습니다. 아래에서 막힌 부분을 정리했습니다.
결국 builddir/src 아래에 exe 62개가 나왔습니다.
실행은 이렇게 했습니다.
. .\setup-env.ps1
.\thorvg.example\builddir\src\Shapes.exe
기본은 software 렌더러이고, GL을 쓰려면 Shapes.exe gl처럼 넘기면 됩니다.
막혔던 부분
MSYS2 설치 실패
winget으로 설치하다 실패했습니다. 디렉터리만 남고 툴이 없었습니다.
→ WinLibs로 대체했습니다.
pkg-config 이름
WinLibs에는 pkgconf.exe만 있었습니다. meson은 pkg-config를 찾습니다.
→ pkgconf.exe를 복사해서 pkg-config.exe로 만들어 두었습니다.
PKG_CONFIG_PATH
로컬 prefix에 설치해서인지, 설치가 끝난 뒤 pkg-config --modversion thorvg-1을 하면 찾지 못했습니다.
→ ThorVG랑 SDL2의 lib/pkgconfig 경로를 PKG_CONFIG_PATH에 넣으니 해결됐습니다.
include 경로 꼬임
예제 쪽은 이렇게 include합니다.
#include <thorvg-1/thorvg.h>
#include <thorvg_capi.h> // Capi만 이렇게
그런데 기본 pc 파일 Cflags가 -I.../include/thorvg-1만 있어서
헤더를 못 찾는 에러가 났습니다.
그래서 thorvg-1.pc를 이렇게 고쳤습니다.
Cflags: -I${includedir} -I${includedir}/thorvg-1
고친 뒤에는 builddir를 지우고 다시 세팅해야 반영됐습니다.
Remove-Item -Recurse -Force builddir
meson setup builddir
ninja -C builddir
SDL2 pc prefix
위에 말한 대로 /tmp/... 경로를 .tools 경로로 수정했습니다.
실제 실행 결과
빌드 성공만으로는 충분하지 않아, 예제들을 하나씩 띄워보고 캡처해 두었습니다.
창 상단에 Engine과 FPS가 표시되는 것으로 정상 렌더링을 확인할 수 있습니다.
Shapes
튜토리얼에 나오는 기본 도형입니다.
Path
선이랑 베지어로 직접 path를 그린 예제입니다.
FillRule
FillSpread
LinearGradient
RadialGradient
Stroke
StrokeLine
Scene
SceneTransform
회전, 확대, 이동을 보여줍니다.
PictureSvg
PicturePng
TextTtf
Masking
Blending
Lottie
애니메이션도 잘 돌아갔습니다.
Animation
폴더 구조
1st/
├── README.md
├── setup-env.ps1 # 환경 세팅용
├── .tools/
│ ├── prefix/ # ThorVG 설치한 곳
│ └── SDL2-2.32.8/ # SDL2
├── thorvg/
└── thorvg.example/
나중에 다시 할 때
. .\setup-env.ps1pkg-config --modversion thorvg-1/sdl2확인- ThorVG를 다시 설치하면:
ninja -C thorvg/builddir install - 예제:
ninja -C thorvg.example/builddir .\thorvg.example\builddir\src\Shapes.exe실행
댓글
Discussion 원문