[과제] 1주차) 프로젝트 작업환경 구성 김두람 #5
alpakaDurumi
started this conversation in
Blog
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
본 글은 Windows 11 (버전 25H2) 환경에서의 ThorVG, ThorVG Example 빌드 과정을 소개합니다.
빌드 준비
먼저 빌드할 두 프로젝트에서 필요로 하는 종속성, 도구를 살펴보면 다음과 같습니다:
Meson과Ninja사용ThorVG,SDL2필요ThorVG 라이브러리 자체는 기본 빌드 기준으로 self-contained이기 때문에 별도의 외부 종속성이 필요하지 않습니다. 다만 프로젝트를 빌드하기 위해서는 적절한 툴체인 또는 빌드 환경, 도구 등이 필요하며, 선택 기능들을 활성화하는 경우 추가 종속성이 요구됩니다. 이 글에서는 기본 빌드를 기준으로 설명했습니다.
또한
Meson에서는 종속성을 찾을 때 dependency()를 사용하는데요,dependency()는 기본적으로pkg-config를 통해 종속성을 찾고, 실패하면CMake를 이용해 다시 탐색합니다. 또한 라이브러리에 따라 macOS의 Framework나 자체적인 감지 로직을 지원하기도 합니다.ThorVG Example의 종속성을 보면:
dependency()에 별도로method인자가 설정되어있지 않기 때문에auto로 동작하며, 상기한 여러 방법을 모두 시도하게 됩니다.여기까지 분석한 결과, Windows 환경에서는 MSYS2를 사용하는 것이 두 프로젝트의 빌드 환경을 구성하는 데 매끄러운 방법이라고 생각했습니다. 패키지 관리자
pacman을 사용하여 툴체인, 빌드 시스템,pkg-config와SDL2을 설치하고 환경을 설정하는 과정이 네이티브 윈도우 환경에서보다 훨씬 간단합니다.개발 환경 설정
UCRT64를 선택하면 잘 동작합니다.CLANG64를 사용했습니다.UCRT64기준):pacman -S \ mingw-w64-ucrt-x86_64-toolchain \ mingw-w64-ucrt-x86_64-meson \ mingw-w64-ucrt-x86_64-SDL2Note
mingw-w64-ucrt-x86_64-toolchain에mingw-w64-ucrt-x86_64-pkgconf가 포함되어 있습니다.pkgconf는pkg-config호환 유틸리티로,pkg-config실행 파일을 제공합니다.CLANG64를 사용하는 경우, 패키지 접두사를mingw-w64-clang-x86_64-로 써줘야 합니다.이후 빌드와 실행을 포함한 모든 명령은 이번 단계에서 환경 설정한 셸을 통해 실행합니다.
빌드
ThorVG는Mesonconfigure 시 여러 기능을 선택적으로 활성화시킬 수 있습니다. 사용 가능한 옵션 목록은 프로젝트 루트의meson_options.txt에 나와 있으며,meson setup builddir로 configure 한 이후로 실제 설정된 옵션을 확인하거나 변경할 수 있습니다.
Note
ThorVG Example의 각 예제는 사용하는 기능에 따라 추가 종속성을 요구할 수 있습니다.ThorVG
git clone https://github.com/thorvg/thorvg.git cd thorvg meson setup builddir ninja -C builddir install이때 만약
engines옵션에all을 지정하고 싶다면 configure 시 아래와 같이 지정해주세요.이미 configure 한 상황이라면
--reconfigure을 추가로 붙여주세요. configure 내용이 바뀌었다면 install도 다시 진행해주어야 합니다.ThorVG Example
git clone https://github.com/thorvg/thorvg.example.git cd thorvg.example meson setup builddir ninja -C builddir예제 실행 결과
Beta Was this translation helpful? Give feedback.
All reactions