差分表示
- 最後の更新で追加された行はこのように表示します。
- 最後の更新で削除された行はこのように表示します。
Qtアプリのセルフコンパイルの為に
ずいぶん前に作って使ってた気がするのですが、需要がありそうなのでまとめ。
* moc のクロスコンパイル
** moc.pro の書き換え
moc.pro を下記のように書き換えます。
- qteに含まれるソースをコンパイル対象から外す。
- 代わりにlibqteをリンクしてオブジェクトを作る。
*** moc.pro 2001-03-31 01:09:40.000000000 +0900
--- moc-e.pro 2004-02-12 13:17:15.000000000 +0900
***************
*** 8,34 ****
DEPENDPATH = ../../include ../tools .
OBJECTS_DIR = .
MOCGEN = mocgen.cpp
! SOURCES = $$MOCGEN \
! ../tools/qbuffer.cpp \
! ../tools/qcollection.cpp \
! ../tools/qcstring.cpp \
! ../tools/qdatastream.cpp \
! ../tools/qdatetime.cpp \
! ../tools/qfile.cpp \
! ../tools/qgarray.cpp \
! ../tools/qgdict.cpp \
! ../tools/qglist.cpp \
! ../tools/qglobal.cpp \
! ../tools/qgvector.cpp \
! ../tools/qiodevice.cpp \
! ../tools/qregexp.cpp \
! ../tools/qstring.cpp \
! ../tools/qtextcodec.cpp \
! ../tools/qtextstream.cpp \
! ../tools/qutfcodec.cpp
!
! unix:SOURCES += ../tools/qfile_unix.cpp
!
! win32:SOURCES += ../tools/qfile_win.cpp
!
TARGET = moc
--- 8,13 ----
DEPENDPATH = ../../include ../tools .
OBJECTS_DIR = .
MOCGEN = mocgen.cpp
! SOURCES = $$MOCGEN
TARGET = moc
+ LIBS += -L$(QTDIR)/lib -lqte
** コンパイル手順
- tmake
$ tmake -o makefile moc-e.pro
- make
$ make
- strip
$ arm-linux-strip moc
* uicのクロスコンパイル
下記の手順を自動的に行うシェルスクリプトを書いてみました。
uicのソースディレクトリにこのスクリプトを置いて実行するとuicのバイナリが出来ます。
- [[build_uic.sh Download:build_uic.sh]]
** 追加で必要なファイルの用意
下記の2ファイルをカレントディレクトリにコピーしておきます。
- qdom.cpp
- qconfig.h
** qconfig.h の書き換え
カレントディレクトリにコピーした qconfig.h の中の
#define QT_NO_DOM
という記述をコメントアウトし、DOMを有効にします。
//#define QT_NO_DOM
** uic.pro の書き換え
uic.pro を下記のように書き換えます。
- qdom.cpp を SOURCES に追加。
- INCLUDEPATH の先頭にカレントディレクトリを追加。
- LIBS から -lqutil を削除。
- DESTDIR をコメントアウト。
*** uic.pro 2001-06-12 20:31:44.000000000 +0900
--- uic-e.pro 2004-02-12 13:11:32.000000000 +0900
***************
*** 1,10 ****
TEMPLATE = app
CONFIG += qt console warn_on release
HEADERS = uic.h ../shared/widgetdatabase.h ../shared/domtool.h ../integration/kdevelop/kdewidgets.h
! SOURCES = uic.cpp ../shared/widgetdatabase.cpp ../shared/domtool.cpp ../integration/kdevelop/kdewidgets.cpp
TARGET = uic
! INCLUDEPATH = ../shared ../util ../../../src/3rdparty/zlib/
! unix:LIBS += -L$(QTDIR)/lib -lqutil -L../lib
win32:LIBS += $(QTDIR)/lib/qutil.lib
DEFINES += UIC
! DESTDIR = $(QTDIR)/bin
--- 1,10 ----
TEMPLATE = app
CONFIG += qt console warn_on release
HEADERS = uic.h ../shared/widgetdatabase.h ../shared/domtool.h ../integration/kdevelop/kdewidgets.h
! SOURCES = uic.cpp ../shared/widgetdatabase.cpp ../shared/domtool.cpp ../integration/kdevelop/kdewidgets.cpp qdom.cpp
TARGET = uic
! INCLUDEPATH = ./ ../shared ../util ../../../src/3rdparty/zlib/
! unix:LIBS += -L$(QTDIR)/lib -L../lib
win32:LIBS += $(QTDIR)/lib/qutil.lib
DEFINES += UIC
! #DESTDIR = $(QTDIR)/bin
** コンパイル手順
- tmake
$ tmake -o makefile uic-e.pro
- make
$ make
- strip
$ arm-linux-strip uic
* コメント
コメント等はこちらにどうぞ。
- 2004-02-15 (Sun) 01:37:37 ''[[yakty]]'' : moc,uicって書いてあったんでとりあえず両方ともクロスコンパイル手順を書いてみましたが、mocはdev-imgに入ってますねぇ…
- 2004-02-26 (Thu) 03:50:54 ''[[suzu]]'' : 素朴な疑問なんですが、セルフでuicが必要になる場面ってあるのでしょうか?配布ソースはuiファイルから変換済みでしょうし…。
- 2004-02-26 (Thu) 07:17:46 ''[[yakty]]'' : 私は自分のアプリをたまーにセルフでコンパイルする程度ですけど、必要になる場面はありますよ。tmakeで作成したmakefileだとmake cleanで.uiから生成したソースは消えてしまいますし。
- 2004-02-27 (Fri) 06:42:34 ''[[suzu]]'' : mocで作ったソースじゃなくてuicで作ったのが消えるんですか
- 2004-02-27 (Fri) 06:44:17 ''[[suzu]]'' : ええと、make cleanで消えるということは、uicもtmakeのルールに組み込んで、GUIの基底クラスは毎回クリアするということですか?
- 2004-02-27 (Fri) 06:45:23 ''[[suzu]]'' : QT開発始めたばかりなので、なにかおかしなこと言ってたらすみません(^_^;)
- 2004-02-27 (Fri) 09:30:04 ''[[yakty]]'' : progen -> tmake で作ったmakefileだと消えますよね?あ、もしかしてシャープの公開してるチュートリアルを参考にしてます?あれはやり方が良くないです…(^_^; 通常はGUI基底クラスのソースは直接編集せずに、基底クラスを継承したクラスを作ってそっちを編集するのが良いと思います。
- 2007-11-07 (Wed) 04:32:35 ''[[COOKIE]]'' : 整形Heavy metal<a href= http://info.iifree.net/vigra/site_map.html >vigra prescription online</a> <a href= http://info.iifree.net/female-viagara/site_map.html >generic brand of viagara online</a> <a href= http://info.iifree.net/viagara-female/site_map.html >where to buy viagara online</a> <a href= http://info.iifree.net/vigra-pills/site_map.html >vigra online shop</a> <a href= http://info.iifree.net/levitra-viagara/site_map.html >generic viagara online</a>
[[#comment]]
[[#comment]]
03969