← 블로그 목록

[과제] 1주차) 프로젝트 작업환경 구성 김두람

@alpakaDurumi
  • #과제

본 글은 Windows 11 (버전 25H2) 환경에서의 ThorVG, ThorVG Example 빌드 과정을 소개합니다.

빌드 준비

먼저 빌드할 두 프로젝트에서 필요로 하는 종속성, 도구를 살펴보면 다음과 같습니다:

  • 공통
    • 빌드에 MesonNinja 사용
  • 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-configSDL2을 설치하고 환경을 설정하는 과정이 네이티브 윈도우 환경에서보다 훨씬 간단합니다.

개발 환경 설정

  1. 먼저 MSYS2를 설치합니다. 링크에서 installer를 다운로드 받아 설치할 수 있습니다.
  2. 사용할 환경을 선택합니다:
    • 대부분의 경우 UCRT64를 선택하면 잘 동작합니다.
    • 필자는 LLVM 툴체인을 사용하기 위해 CLANG64를 사용했습니다.
    • MSYS2 Environments 비교
  3. environment 일괄 업데이트합니다:
pacman -Syu
  1. 툴체인, 빌드 시스템, 종속성 등을 설치합니다 (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-toolchainmingw-w64-ucrt-x86_64-pkgconf가 포함되어 있습니다. pkgconfpkg-config 호환 유틸리티로, pkg-config 실행 파일을 제공합니다.
  • 만약 CLANG64를 사용하는 경우, 패키지 접두사를 mingw-w64-clang-x86_64-로 써줘야 합니다.

이후 빌드와 실행을 포함한 모든 명령은 이번 단계에서 환경 설정한 셸을 통해 실행합니다.

빌드

ThorVGMeson 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
Animation

댓글

Discussion 원문