반응형
gtk 프로그래밍 설정 파일 파싱
gtk 프로그래밍 설정 파일
GTK 프로그램에서 (사용자 설정에 의해서) 프로그램이 유연하게 동작해야하는 경우, 설정 파일을 쉽게 파싱할 수 있는 API와 예제를 기록해 둡니다.
테스트환경
- Windows10, MSYS2 MINGW64, gcc (Rev6, Built by MSYS2 project) 12.2.0
- gtk4 4.8.2-1
$ gcc --version
gcc.exe (Rev6, Built by MSYS2 project) 12.2.0
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ pacman -Qe | grep gtk4
mingw-w64-x86_64-gtk4 4.8.2-1
설정파일 작성하기
첫번째로, 프로그램에서 읽을 config.ini 파일을 작성합니다. [group1] 은 key group 을 의미하며, 설정파일 내의 key 값을 그룹화 할 수 있습니다. 그리고, 실제 key 와 값은 key=value 형식으로 작성합니다. 아래 예제는 설정파일의 key 값들을 일반화 시킨 예제 입니다.
[group1]
str_value=Hello
int_value=4321
Make 파일 작성하기
MINGW64 환경에서 Makefile 작성하는 것은 Linux 보다 조금 까다롭습니다. 설치된 dev package 들을 pkg-config 찾는 문법이 조금 이해가 되지않을 수 있어요. 아래는, gtk4 header file 과 library 를 pkg-config 로 찾아서 gcc 로 빌드하는 Makefile 의 예제입니다.
CFLAGS=-g -Wall -Wextra $$(pkg-config --cflags gtk4)
GTK_LIBS = $(shell pkg-config gtk4 --libs)
#$(error $(GTK_CFLAGS))
all: key_file
key_file: g_key_file_example.o
gcc -o g_key_file_example.exe g_key_file_example.o $(GTK_LIBS)
key_file.o: g_key_file_example.c
gcc -c g_key_file_example.c -o g_key_file_example.o
clean:
rm -rf *o
rm -rf *exe
코딩하기
아래와 같이 설정파일을 읽는 코드를 작성합니다.
#include <gtk/gtk.h>
int main(void)
{
GKeyFile *key_file;
GError *error = NULL;
gchar *str_val;
gint int_val;
key_file = g_key_file_new();
if(g_key_file_load_from_file(key_file, "config.ini", G_KEY_FILE_NONE, &error))
{
str_val = g_key_file_get_string(key_file, "group1", "str_value", &error);
int_val = g_key_file_get_integer(key_file, "group1", "int_value", &error);
g_print("\nstr_value : %s, int_value: %d\n", str_val, int_val);
}
else
{
g_error("\nkey file read error : %s", error->message);
}
return 0;
}
- GKeyFile 은 설정 key file 읽기 위한 데이터 구조체 입니다. GKeyFile 구조체를 사용하기 위해서 선언하고 생성 합니다.
- g_key_file_load_from_file 함수로 설정 파일을 열고, g_key_file_get_XXX 함수로 parse 합니다.
실행결과
$ ./g_key_file_example.exe
str_value : Hello, int_value: 4321
참고자료
GLib 의 KeyFile 구조체와 관련 함수를 참고 합니다.
반응형
'프로그래밍 > GLibㆍGTKㆍGstreamer' 카테고리의 다른 글
Gstreamer Python : mp4 filesrc 예제 구현하기 (0) | 2023.02.02 |
---|---|
Gstreamer Python : factory 파이프라인 구현하기 (1) | 2023.02.02 |
Gstreamer Python : pipeline 예제 (0) | 2023.02.02 |
윈도우 GNU, MSYS2 개발환경 구축 (0) | 2022.12.03 |
Gstreamer 로 Jetson 에서 라즈베리파이v2 카메라 테스트 (0) | 2022.07.01 |
GSTShark 로 Gst-reamer pipeline 프로파일링 (0) | 2022.05.30 |
Gst-reamer no element "avenc_h263p" 에러 (0) | 2022.05.30 |
Hikvision RTSP gst-reamer 파이프라인 (0) | 2022.03.18 |