1. GTK+ 란? |
GTK+는 C로 이루어졌지만, 클래스의 개념과 Callback 함수 (함수에 대한 포인터)를 갖춘 객체지향적 특성을 갖춘 기술이라고 할 수 있습니다.
그럼 GTK+는 차라리 C++ 용으로 나오는 게 낫지 않았을까 라고 생각하실 수 있습니다.
이러한 생각이 많았는 지, GTK+는 C++ 스타일로도 나오게 됩니다. 그것을 GTK-- 또는 GTKMM이라고 합니다.
정확한 GTK+ 개발 문서는 https://developer.gnome.org/gtkmm-tutorial/stable/index.html.en 참고하시길 바랍니다.
그리고, 아시는 분들은 아시겠지만, C 스타일의 GTK+로도 클래스화가 가능합니다. 이 말은 C++에서도 GTK+를 사용할 수 있다는 말입니다. C++에서 사용하려면 클래스화할 수 있어야 하는 건 당연한 이야기겠죠? 그럼 어떻게 해야 가능할까요?
이 방법은 먼저 정답을 말하자면, 해당 G_CALLBACK 함수를 static화하여 사용하면 됩니다. 자세한 설명은 추후에 관련 포스팅할 때 정리하도록 하겠습니다.
2. GTK+에 필요한 라이브러리. |
- Glib
- Pango
- ATK
- GDK
- GdkPixbuf
- Cairo
3. GTK+ 기본 컴파일 방법 |
다음의 예로 GTK+를 컴파일하는 방법을 설명하겠습니다.
gcc -Wall -g helloworld.c -o helloworld `pkg-config –cflags gtk+-2.0` || `pkg-config –libs
리눅스에서 컴파일을 한번이라도 해보신 분이라면 위의 예를 이해하는 게 어렵지 않으실 겁니다.
'pkg-config –cflags gtk+-2.0' 컴파일러가 볼 수 있는 Include 디렉토리를 출력한다.
'pkg-config –libs gtk+-2.0' 라이브러리 리스트.
`pkg-config –cflags –libs gtk+-2.0` 둘을 더하여 사용할 수 있음.
위의 플래그를 추가하지 않는다면, gtk.h가 포함되지 않았다는 에러 메시지를 보시게 될 것입니다.
4. GTK+ Makefile 예제 |
제가 GTK+를 이용하여 프로그래밍하면서 가장 어려웠던 점은 Makefile을 작성할 때였습니다. 물론 제가 Makefile를 처음 만들어 보는 것이었기 때문에 그러한 점들이 복합적으로 문제가 되었겠지만, GTK+를 이용할 때 필요한 플래그를 어디에 넣어야 할 지 고민도 되었고, 구글링도 여러 곳을 검색하면서 해결하려고 노력했던 때가 기억에 남습니다.
그러므로, 이 포스팅을 보시는 분들은 좀 더 쉽게 GTK+를 이용하실 수 있도록 정리하려고 합니다.
먼저, 예제를 적어 보았습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | .SUFFIXES: .cpp.o TARGET=mygtk GTKFLAGS1=`pkg-config --cflags gtk+-2.0` GTKFLAGS2=`pkg-config --libs gtk+-2.0` CXXFLAGS=-Wall -O2 OBJECTS= main.o Hello.o HelloUi.o SRCS=$(OBJECTS:.o=.cpp) DEPEND_FILE=depend_file CXX=g++ all: $(TARGET) $(TARGET): $(OBJECTS) $(CXX) $(CXXFLAGS) -o $(TARGET) $(OBJECTS) $(GTKFLAGS2) -include $(DEPEND_FILE) main.o: main.cpp $(CXX) $(CXXFLAGS) $(GTKFLAGS1) -o $@ -c main.cpp Hello.o: Hello.cpp $(CXX) $(CXXFLAGS) $(GTKFLAGS1) -o $@ -c Hello.cpp HelloUi.o: HelloUi.cpp $(CXX) $(CXXFLAGS) $(GTKFLAGS1) -o $@ -c HelloUi.cpp dep: g++ -MM $(SRCS) $(GTKFLAGS) > $(DEPEND_FILE) clean: /bin/rm -f $(TARGET) *.o $(DEPEND_FILE) | cs |
Makefile 작성법에 대해서는 이 포스팅에 정리하기는 힘들 것 같습니다. Makefile 작성법만 해도 엄청난 분량의 pdf 내용이 나오니깐 말이죠..
혹시나, 차후에 Makefile에 대해서도 정리할 수 있었으면 좋겠습니다.
여튼, 위의 Makefile 작성 예제만 보셔도 GTK+를 위한 makefile을 작성하는 데에는 큰 어려움이 없으실 것입니다.
(또한, 위의 방법이 고수분들께서 보신다면, 한숨이 나오실 수도 있을 법한 입문자의 작성 예제입니다. 더 나은 예제로 만들어갈 수 있도록 도움을 주시고자 하신다면, 댓글 부탁드립니다.!!)
GTK+를 위한 설명은 크게 3, 4 줄을 설명드릴 수 있을 것 같습니다. 3에서 말한 것과 같이 GTK+를 컴파일 하기 위한 플래그라고 생각하시면 될 것 같습니다. 이러한 내용을 10 ~ 12줄 처럼 컴파일할 때, 플래그를 적용해준다면 GTK+ 컴파일을 하는 데에는 큰 어려움이 없으실 것이라고 생각합니다.
추가 설명이 필요하시면 댓글 남겨주시기 바랍니다.
이상, GTK+ 소개에 대한 포스팅을 마치겠습니다. 다음 포스팅은 GTK+ 기본 예제를 바탕으로 GTK+의 기본적인 창 띄우기와 같은 실행 예제를 소개하겠습니다.
참고 자료 출처:
https://developer.gnome.org/gtkmm-tutorial/stable/index.html.en
제 글이 도움이 되셨거나 공감이 되시는 부분이 있으셨다면, 밑에 있는 공감 버튼 한 번씩 꾸욱 눌러주시면 감사하겠습니다.
공감 버튼은 저에게 큰 도움이 됩니다. 감사합니다.
'컴퓨터 관련 > Linux || Unix' 카테고리의 다른 글
[GTK+] 3. GTK+ Layout 관리 (0) | 2017.06.17 |
---|---|
[GTK+] 2. GTK+ 기본 예제 (0) | 2017.06.12 |
[GTK+] GTK를 들어가면서 (목차) (0) | 2017.06.09 |
[Linux] 크로스 컴파일러(Cross Compiler) 정리. (0) | 2017.06.07 |
리눅스(우분투) 32bit와 64bit 차이점 및 64bit에서 32bit 또는 32bit에서 64bit 컴파일 방법 정리 (0) | 2017.05.25 |
댓글