2009年5月1日金曜日

GTK+のコンパイル

前やったときはこんなに面倒くさいオプションいらなかった気がするんだけど。
g++ -o hello_world hello_world.cpp `pkg-config --cflags --libs gtk+-2.0`

追記:
  ubuntu 9.04(netbook remix)では同じ方法ではコンパイルが通らなかった。pkg-config自体は既にインストールされていたため
$ pkg-config --list-all
でめぼしいものを探したところ「gtk+」という項目を発見。ということで
  $ g++ -o sample_gtk.cc -o sample_gtk `pkg-config --cflags --libs gtk+`
と実行してみるとコンパイルに成功した。ubuntu8.10からの変更? pkg-configの仕様が変わった?
 後、これの前に
  $ sudo apt-get install libgtkmm*-devlibgtk2.0-dev
を実行。
さらに追記:
  コンパイルが通らなかったのはlibgtk2.0-devをインストールしてなかったからでした。

pkg-configはコンパイルオプションを自動生成してくれるスグレモノ。

バッククォートで囲んでいるのはシェルではバッククォートで囲んだ部分の実行結果を変数として格納できるから。
つまりこのコマンドを実行すると
pkg-config --cflags --libs gtk+-2.0
のコマンドの実行結果

-D_REENTRANT -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/directfb -I/usr/include/libpng12 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lgio-2.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lglib-2.0

を「g++ -o hello_world hello_world.cpp」の後に付加してコンパイルを実行しているということ。

・・・これ書くぐらいなら楽なもんだなぁ。

0 件のコメント:

コメントを投稿