meson 찍먹하기

#windows11에서 진행함
conda create -n meson_test -y python==3.12.12
conda activate meson_test
pip install meson ninja

로 환경을 만들어주고 필요한 종속성을 설치한다.

#include <iostream>

int main() {
    std::cout << "Hello, Meson Build!" << std::endl;
    return 0;
}

와 같은 간단한 코드를 작성한다.(test.cpp)
그리고 meson.build 라는 파일을 작성한다.

# 프로젝트 이름: tutorial, 언어: cpp
project('tutorial', 'cpp')

# 실행 파일 이름: demo, 소스: test.cpp
executable('demo', 'test.cpp')

meson 빌드는 항상 설정(setup) 과 컴파일(compile) 두 단계로 나뉜다.

meson setup builddir

로 설정을 진행한다.

와 같이 x64 Native Tool Command Prompt 를 실행한다.

그리고 다음 커맨드를 통해 컴파일을 완료한다.

meson compile -C builddir

다음과 같이 찍먹을 완료했다.

좋아 이제 실전에 돌입한다.

gvsbuild를 빌드해보려고 한다.

https://github.com/wingtk/gvsbuild

pip install gvsbuild
cd \
gvsbuild build gtk4 --build-dir Q:\gtk-build --enable-gi

7분 정도 걸렸다

이제 다음 코드를 입력한다.

#include <gtk/gtk.h>

static void activate(GtkApplication* app, gpointer user_data) {
    GtkWidget* window;

    window = gtk_application_window_new(app);
    gtk_window_set_title(GTK_WINDOW(window), "축하합니다! 윈도우에서 GTK4 성공!");
    gtk_window_set_default_size(GTK_WINDOW(window), 400, 300);
    gtk_widget_show(window);
}

int main(int argc, char** argv) {
    GtkApplication* app;
    int status;

    app = gtk_application_new("org.gtk.example", G_APPLICATION_DEFAULT_FLAGS);
    g_signal_connect(app, "activate", G_CALLBACK(activate), NULL);
    status = g_application_run(G_APPLICATION(app), argc, argv);
    g_object_unref(app);

    return status;
}

main.cpp

project('gtk_hello', 'c', 'cpp',
  version : '0.1',
  default_options : ['cpp_std=c++17'])

# 방금 우리가 빌드한 GTK4를 찾으라고 지시
gtk_dep = dependency('gtk4')

executable('gtk_hello',
           'main.cpp',
           dependencies : gtk_dep,
           win_subsystem : 'console')

meson.build




set PKG_CONFIG_PATH=Q:\gtk-build\gtk\x64\release\lib\pkgconfig
set PATH=%PATH%;Q:\gtk-build\gtk\x64\release\bin
#Meson으로 VS 솔루션 만들기
meson setup build_vs --backend=vs --wipe

sln을 선택한다.

Ailee(에일리) _ Evening sky(저녁 하늘) MV

한글이 깨졌다

meson.build 파일을 열고 project() 바로 밑에 아래 코드를 추가한다.

project('gtk_hello', 'c', 'cpp',
  version : '0.1',
  default_options : ['cpp_std=c++17'])

# [추가] 윈도우(MSVC)일 경우, 소스코드와 실행파일 인코딩을 모두 UTF-8로 고정
if host_machine.system() == 'windows'
  add_project_arguments('/utf-8', language : 'cpp')
endif

gtk_dep = dependency('gtk4')
executable('gtk_hello',
           'main.cpp',
           dependencies : gtk_dep,
           win_subsystem : 'console')

meson setup build_vs --reconfigure

고쳐진다.