1. 목표: 나는 윈도우 탐색기에서 실행 파일을 더블 클릭만 해도 실행할 수 있는 GUI 프로그램을 C언어로 GTK+ 라이브러리를 사용해서 만들거야.
2. 개발 환경 준비
1) MSYS2 리눅스 유사 환경, mingw-w64 컴파일러 설치: https://www.msys2.org/
2) MSYS2 MINGW64 터미널 실행
3) 패키지 매니저 업데이트
pacman -Syu
3. 컴파일러 설치
gcc --version
pacman -S mingw-w64-x86_64-gcc
4. 라이브러리 및 개발도구 설치
1) GTK+ 4 설치: https://www.gtk.org/
pacman -S mingw-w64-x86_64-gtk4
2) pkg-config 설치
pacman -S pkg-config
3) glade 설치
pacman -S mingw-w64-x86_64-glade
5. 코드 편집기 설치: vim
pacman -S vim
6. 프로젝트 생성
mkdir my_project
cd my_project
glade
7. 빌드
main.c:
#include <gtk/gtk.h>
// 애플리케이션 활성화 시 호출되는 콜백 함수
static void on_activate(GtkApplication *app, gpointer user_data) {
GtkBuilder *builder;
GtkWidget *window;
// GtkBuilder를 사용하여 .glade 파일을 로드
builder = gtk_builder_new_from_file("my_project.glade");
// 로드된 인터페이스에서 윈도우 위젯 가져오기
window = GTK_WIDGET(gtk_builder_get_object(builder, "your_window_id"));
// GtkBuilder 객체에 대한 참조를 해제
g_object_unref(builder);
// 윈도우 위젯에 애플리케이션 객체를 설정
gtk_window_set_application(GTK_WINDOW(window), app);
// 윈도우를 화면에 표시
gtk_widget_set_visible(window, TRUE);
}
int main(int argc, char *argv[]) {
GtkApplication *app;
int status;
// 새로운 GtkApplication 객체 생성
app = gtk_application_new("com.example.yourapp", G_APPLICATION_DEFAULT_FLAGS);
// "activate" 신호에 on_activate 콜백 함수를 연결
g_signal_connect(app, "activate", G_CALLBACK(on_activate), NULL);
// 애플리케이션 실행
status = g_application_run(G_APPLICATION(app), argc, argv);
// GtkApplication 객체에 대한 참조를 해제
g_object_unref(app);
// 애플리케이션 종료 시 반환값
return status;
}
1) my_project.glade: 실제 glade 파일명
2) your_window_id: glade에서 윈도우 위젯의 ID 로 설정한 값
8. 컴파일
gcc main.c -o myapp `pkg-config --cflags --libs gtk4` -mwindows
9. 패키징
아래 경로의 모든 dll 파일을 실행파일과 같은 폴더에 넣어준다. 하나씩 지워가며 dll 파일 필요성을 확인한다. 이 부분이 정말 귀찮다. 하지만 나는 아직 해결방법을 찾지 못했다.
cd ~
cd ../mingw64/bin
'컴퓨터 > C' 카테고리의 다른 글
C 크로스 컴파일 (0) | 2023.04.03 |
---|---|
C strtok() (0) | 2022.11.23 |
C strstr() (0) | 2022.11.23 |
C dup() (0) | 2022.11.23 |
C pthread_detach() (0) | 2022.11.23 |