← 과제 목록

[과제] 1주차) 프로젝트 작업환경 구축 김휘서 (with MacOS)

@hwiskim
  • #과제
목차

늦게 제출을 해서 진심으로 죄송합니다..

💻과제요구 사항

그것은 작업환경 셋업입니다. 그리고 늦어서 진짜 죄송합니다.

또르 브이-지를 개인로컬에 셋업해보자!!

환경

OS: macOS Tahoe 26.5.2 , M3 Macbook Air

빌드 환경 구성

이왕 늦게 시작한거 다른 멘티님이 올려주신 맥북 환경 구축 블로그 글를 참고했습니다.

일단 미리 클론을 따놓은 thorvg 루트 폴더에서 meson와 ninja을 실행하여 ThorVG를 구성합니다.

하지만 둘다 제게 안깔려 있기 때문에 먼저 깔아야하는데요

MacOS이기에 터미널에서 스무스하게 brew install meson을 실행해서 깔아놓습니다.

(이걸만 실행시켜도 ninja도 자동으로 깔립니다 아주 좋아욘)

실행

meson setup builddir
ninja -C builddir install

근데 실행 실패함

뭐지?

이유를 찾아보니

WARNING: OpenMP support not available because: Couldn't find libomp
Run-time dependency OpenMP found: NO  (tried system)

결론적으로 저한테 OpenMP가 안 깔려있다고 하네요. OpenMP란 코드에서 반복문을 만났을 때 여러 CPU 코어로 병렬 나눔 처리해주는 컴파일러 확장인데, ThorVG에서는 무거운 연산을 여러 코어로 나눠서 빠르게 처리하려고 이걸 쓴다고 합니다.

이게 맥북에는 처음부터 깔려있진 않고 Meson 빌드 시스템에서는 빌드 옵션에 있기때문에 오류가 난듯합니다!

brew install libomp로 이 좋은걸 깔아주고 다시 빌드 해보겠습니다.

pkg-config --modversion thorvg-1
1.0.0

잘 빌드가 되었습니다.

✅ 켜져 있는 기능

분류항목
기본File I/O, Multi-Tasking, Partial Rendering
래스터 엔진CPU
로더SVG, TTF, LOTTIE
ExtraLottie Expressions, OpenMP

❌ 꺼져 있는 기능

분류항목
기본Log Message, Tests, SIMD Instruction(none)
래스터 엔진GL, WebGPU
로더OTF, PNG, JPG, WEBP
세이버GIF
바인딩CAPI
Svg2Png, Lottie2Gif
ExtraOpenGL Variant (None)

하지만 왠지 불안하게 뭐는 YES 고 뭐는 NO 다 라고 알려주길래 일단 정리해놓고 추후에 확인하겠습니다.

예제 실행해보기

#include "thorvg.h"
#include <thread>

#define WIDTH 800
#define HEIGHT 800

int main() {
    // 1. 엔진 초기화
    tvg::Initializer::init(std::thread::hardware_concurrency());

    // 2. 캔버스 준비
    static uint32_t buffer[WIDTH * HEIGHT];
    auto canvas = tvg::SwCanvas::gen();
    canvas->target(buffer, WIDTH, WIDTH, HEIGHT, tvg::ColorSpace::ARGB8888);

    // 3. 도형 생성 및 추가
    auto rect = tvg::Shape::gen();
    rect->appendRect(50, 50, 200, 200, 20, 20);
    rect->fill(100, 100, 100);
    canvas->add(rect);

    // 4. 렌더링 실행
    canvas->draw();
    canvas->sync();

    // 5. 엔진 종료
    tvg::Initializer::term();

    return 0;
}

튜토리얼 예제 파일을 열심히 쳐봐서 컴파일해봤지만, 결과를 확인할 방법이 없다는걸 깨달았다. 가히 슈뢰딩거의 결과물이라고 할수있다.

그러니까 example을 실행해보면 된다!

example 실행해보기

SDL이 깔려있어야 된다고 하던데. 아까 아쉬웠던 랜더링 결과를 확인하기 위해 필요하다고 하네요.

스크린샷 2026-07-21 오후 9 11 07

SDL 해당 사이트를 자세히 보지는 못했지만, 단간론파를 예시로 쓴거 상당히 호감이라 스샷 올립니다. 미성년끼리 벌어지는 반전 넘치는 살인 추리극이 궁금하시면 절대로 단간론파를 플레이하십쇼

다시금, 예제 폴더에서 빌드를 하여 놀아보는 시간을 가져볼까 합니다.

meson setup builddir
ninja -C builddir
./builddir/src/(각종 뽑아보고 싶은거)

남들 다하는 animation 저도 해봤습니다. 제목 없는 디자인

마치며

막상 해보니 진짜 금방끝나네요;; 부끄럽습니다.

하지만 진짜 진짜로 제 환경에 깔아서 돌려보니 흥미가 더 생겼습니다…

짜투리 시간내는 요령이 없어서 지각제출했지만, 더욱 시간관리에 힘써서 다시는 지각하지 않겠습니다!!🥲

댓글

Discussion 원문