つくばチャレンジに参加してみて、ロボットのGUIがとても大切だということがわかりました。そこで、Qtの勉強を最近始めました。授業でも使っている統合開発環境CodeblocksでQtを作成したプログラムをビルドする方法を紹介します。OSはUbuntu 8.04です。
- インクルードパスの設定
- Qtをビルドするためにインクルードパスを追加します。ご自分の環境に合わせたパスに変更してください。この例では、ホームディレクトリにQtの開発環境をインストールしていますので次のように設定しています。
- /home/ユーザ名/qtsdk-2009.03/qt/include
- /home/ユーザ名/qtsdk-2009.03/qt/include/QtCore
- /home/ユーザ名/qtsdk-2009.03/qt/include/QtGui
- ライブラリパスの設定
- Qtのライブラリパスも設定します。ご自分の環境に合わせたパスに変更してください。
- この例では次のように設定しています。
- /home/ユーザ名/qtsdk-2009.03/qt/lib/libQtCore.so
- /home/ユーザ名/qtsdk-2009.03/qt/lib/libQtGui.so
- qt-prebuildの設定
- Qtのプロジェクトファイルからmakefileを作成するためにqmakeを実行する必要がありますが、codeblocksではqmakeを実行するメニューがないのでqt-prebuildを以下をダウンロード、コンパイルして、パスの通っている場所に置きます。
- 以下のコマンドをターミナルで実行します。成功すると実行ファイルqt-prebuildが生成されます。ここではホームディレクトリの下にbinディレクトリを作成しそこにqt-prebuildを置いています。
- wget http://webmail.appert44.org/~plegal/qt/qt-prebuild/qt-prebuild.cpp
- wget http://webmail.appert44.org/~plegal/qt/qt-prebuild/qt-prebuild.pro
- qmake
- make
- Codeblocksを設定します。Pre/post build stepsのPre-build stepsに以下を設定します。
- ~/bn/qt-prebuild
- ビルド prebuildの動作確認
- ではビルドしましょう。Build logをqt-buildがQt関連のファイルを探してくれているのがわかります。
- ビルド 失敗
- ところが、undefined reference to vtable for という大量のエラーが出ます。Qtのプログラムをビルドするためにはmoc(Meta Object Compiler)でソースファイルを生成する必要があります。qmakeを使うと自動的にmocにより必要なファイルが自動生成されます。エラーの原因はこの作成された自動生成ファイル(moc_が既存ファイル名の前に付加される、以下mocファイルと呼びます)がcodeblocksのプロジェクトに追加されていないからです。
- ファイルの追加
- mocファイルをcodeblocksのファイルに追加します。この例では、moc_mainwindow.cppとmoc_map.cppを追加しています。
- ビルド成功
- 再ビルドしましょう。ソースコードに問題がなければ成功します。mocファイルを追加する必要がありますが、すべてcodeblocksでビルドできるのでとても簡単です。
以上です。
でむ
コメント