본 글은 Windows 11 (버전 25H2) 환경에서의 ThorVG, ThorVG Example 빌드 과정을 소개합니다.
빌드 준비
먼저 빌드할 두 프로젝트에서 필요로 하는 종속성, 도구를 살펴보면 다음과 같습니다:
- 공통
- 빌드에
Meson과Ninja사용
- 빌드에
- ThorVG
- 별도의 외부 종속성 없음 (조건부)
- ThorVG Example
ThorVG,SDL2필요
ThorVG 라이브러리 자체는 기본 빌드 기준으로 self-contained이기 때문에 별도의 외부 종속성이 필요하지 않습니다. 다만 프로젝트를 빌드하기 위해서는 적절한 툴체인 또는 빌드 환경, 도구 등이 필요하며, 선택 기능들을 활성화하는 경우 추가 종속성이 요구됩니다. 이 글에서는 기본 빌드를 기준으로 설명했습니다.
또한 Meson에서는 종속성을 찾을 때 dependency()를 사용하는데요, dependency()는 기본적으로 pkg-config를 통해 종속성을 찾고, 실패하면 CMake를 이용해 다시 탐색합니다. 또한 라이브러리에 따라 macOS의 Framework나 자체적인 감지 로직을 지원하기도 합니다.
ThorVG Example의 종속성을 보면:
thorvg_dep = dependency('thorvg-1', required: true)
examples_dep = [thorvg_dep, dependency('sdl2', required: true)]
dependency()에 별도로 method 인자가 설정되어있지 않기 때문에 auto로 동작하며, 상기한 여러 방법을 모두 시도하게 됩니다.
여기까지 분석한 결과, Windows 환경에서는 MSYS2를 사용하는 것이 두 프로젝트의 빌드 환경을 구성하는 데 매끄러운 방법이라고 생각했습니다. 패키지 관리자 pacman을 사용하여 툴체인, 빌드 시스템, pkg-config와 SDL2을 설치하고 환경을 설정하는 과정이 네이티브 윈도우 환경에서보다 훨씬 간단합니다.
개발 환경 설정
- 먼저 MSYS2를 설치합니다. 링크에서 installer를 다운로드 받아 설치할 수 있습니다.
- 사용할 환경을 선택합니다:
- 대부분의 경우
UCRT64를 선택하면 잘 동작합니다. - 필자는 LLVM 툴체인을 사용하기 위해
CLANG64를 사용했습니다. - MSYS2 Environments 비교
- 대부분의 경우
- environment 일괄 업데이트합니다:
pacman -Syu
- 툴체인, 빌드 시스템, 종속성 등을 설치합니다 (
UCRT64기준):
pacman -S \
mingw-w64-ucrt-x86_64-toolchain \
mingw-w64-ucrt-x86_64-meson \
mingw-w64-ucrt-x86_64-SDL2
NOTE
mingw-w64-ucrt-x86_64-toolchain에mingw-w64-ucrt-x86_64-pkgconf가 포함되어 있습니다.pkgconf는pkg-config호환 유틸리티로,pkg-config실행 파일을 제공합니다.- 만약
CLANG64를 사용하는 경우, 패키지 접두사를mingw-w64-clang-x86_64-로 써줘야 합니다.
이후 빌드와 실행을 포함한 모든 명령은 이번 단계에서 환경 설정한 셸을 통해 실행합니다.
빌드
ThorVG는 Meson configure 시 여러 기능을 선택적으로 활성화시킬 수 있습니다. 사용 가능한 옵션 목록은 프로젝트 루트의 meson_options.txt에 나와 있으며, meson setup builddir로 configure 한 이후
meson configure builddir
로 실제 설정된 옵션을 확인하거나 변경할 수 있습니다.
NOTE
ThorVG Example의 각 예제는 사용하는 기능에 따라 추가 종속성을 요구할 수 있습니다.
ThorVG
git clone https://github.com/thorvg/thorvg.git
cd thorvg
meson setup builddir
ninja -C builddir install
이때 만약 engines 옵션에 all을 지정하고 싶다면 configure 시 아래와 같이 지정해주세요.
meson setup builddir -Dengines=all
이미 configure 한 상황이라면 --reconfigure을 추가로 붙여주세요. configure 내용이 바뀌었다면 install도 다시 진행해주어야 합니다.
ThorVG Example
git clone https://github.com/thorvg/thorvg.example.git
cd thorvg.example
meson setup builddir
ninja -C builddir
예제 실행 결과
./builddir/src/Animation.exe
댓글
Discussion 원문