Seeker's Memo

個人的で技術的かもしれないメモがメインのブログです。http://seekers.hatenablog.jp/about

とりあえずGTK2.0のプログラムを書いてみる

というわけで書いてみた
Main.cpp

#include <gtk/gtk.h>

int main(int argc, char** argv){
        //GTKを初期化する
        gtk_set_locale();
        gtk_init(&argc, &argv);
        //ウィンドウの作成
        GtkWidget* window;   //GTKウィンドウのポインタ
        window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        //ウィンドウサイズの指定
        gtk_widget_set_size_request(window, 800, 600);
        //リサイズの可否設定
        gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
        //ウィンドウを閉じればプログラムも終了するようにする
        g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
        //ラベルを追加してみる
        GtkWidget* label = gtk_label_new("Hello, GTK!!");
        gtk_container_add(GTK_CONTAINER(window), label);
        //ウィンドウを表示
        gtk_widget_show(window);
        gtk_widget_show(label);
        gtk_main();

        return 0;
}
$ g++ `pkg-config --cflags --libs gtk+-2.0` Main.cpp
$ ./a.out

`pkg-config --cflags --libs gtk+-2.0` の「``」は当然バッククォートです。
メイクファイルに書くなら以下のような感じかねぇ?

OBJ=mygtk-test
ENTRY_SRC=Main.cpp
OBJS=

CC=gcc
CXX=g++
CFLAGS=-O2 -pipe
CXXFLAGS=$(CFLAGS)
INCLUDES=$(shell pkg-config --cflags gtk+-2.0)
LIBS=$(shell pkg-config --libs gtk+-2.0)

all: $(OBJ)


$(OBJ): $(ENTRY_SRC) $(OBJS)
	$(CXX) $(CXXFLAGS) $(INCLUDES) $(LIBS) $(ENTRY_SRC) $(OBJS) -o $(OBJ)

%.o: %.cpp
	$(CXX) $(CXXFLAGS) $(INCLUDES) -c $*.cpp -o $*.o

.PHONY: clean
clean: 
	rm -vf $(OBJ) $(OBJS)

んで./mygtk-testする。