发布一个应用程序到QTOPIA的过程:
1、 编辑源文件,并添加一个一个工程文件*.pro
2、 编辑一个编译脚本build,内容如下
#!/bin/sh
export QTDIR=/root/qtopia-free-2.2.0/qt2
export QPEDIR=/root/qtopia-free-2.2.0/qtopia
export LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/lib:$LD_LIBRARY_PATH
export TMAKEDIR=/root/qtopia-free-2.2.0/tmake
export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++
tmake -o Makefile filebrowser.pro
最后一个语句是使用tmake生成该工程的makefile
3、 修改该makefile,
LINK = arm-linux-gcc -> LINK=arm-linux-g++
LIBS= $(SUBLIBS) -L/usr/local/arm/3.3.2/arm-linux/lib -L/usr/local/arm/3.3.2/lib -L/lib -L$(QPEDIR)/lib -L$(QTDIR)/lib -lm -lqpe -lqtopia -lqte
LIBS的修改是加入交叉编译器的函数库路径。
TARGET = $(QPEDIR)/bin/filebrowser
这个是编译后的应用程序存放的目录,到这个目录下寻找这个程序,可以修改到自己想要的目录下
4、 修改完后make
5、 把编译后的可执行文件复制到目标文件夹的bin目录下,在目标文件夹的apps/Application下面添加*.desktop文件,在目标目录下建立*文件夹,并把相关的图标文件*.png文件添加到这个文件夹,图标的名称关系到图标文件在应用程序的调用。
6、 *.desktop文件的编辑。
[Translation]
File=QtopiaApplications 程序类型,app
Context=Filebrowser 窗口的标题
[Desktop Entry]
Comment[]=A Filebrowser Program 描述应用程序的功能
Exec=filebrowser 在bin中的可执行文件
Icon=FileBrowser 在pics/filebrowser文件夹下面的png格式图标的名称
Type=Application 程序类型,app
Name[]=filebrowser 应用程序的桌面图标的名称
7、 编译前应该交叉编译qtopia-freee-2.2.0,否则无法找到libqte库
8、 编译器使用的是3.3.2
使用Qt Designer进行程序设计的过程:
这里使用Redhat 9.0自带的Qt Designer进行编程,这个版本比使用qtopia-2.2.0自带的版本的功能要完善要好得多。
1、 新建一个C++工程
2、 新建一个ui界面文件,编辑这个界面文件,并添加进新建的C++工程中
3、 新建一个main的C++源文件,添加到C++工程。
4、 修改.pro文件如下,具体的格式参考qtopia自带的examples里面的pro文件。以下是一个例子:
TEMPLATE =app
CONFIG +=qtopia warn_on release
HEADERS =form1.h
SOURCES =main.cpp
INTERFACES =form1.ui
TARGET =qt_test1
5、 新建一个编译脚本build:
export QTDIR=/root/qtopia-free-2.2.0/qt2
export QPEDIR=/root/qtopia-free-2.2.0/qtopia
export LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/lib:$LD_LIBRARY_PATH
export TMAKEDIR=/root/qtopia-free-2.2.0/tmake
export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++
tmake -o Makefile filebrowser.pro
通过这个脚本后就生成了一个交叉编译的Makefile文件,这个脚本已经是使用交叉编译器了,所以不需要对这个脚本进行修改。编译器是在TMAKEPATH这个环境变量中定义的,具体使用哪个编译器是看这个变量的定义。
6、uic –o form1.h form1.ui 产生form1.h文件
uic –o form1.cpp –i form1.h form1.ui 产生form1.cpp文件
7、运行上述脚本后就产生一个Makefile文件,然后就make,生成目标文件
8、将这个目标文件添加进qtopia系统中,具体过程可以参考上一个总结后面部分的5、6点内容
需要特别注意的是,如果使用的是qtopia-2.2.0自带的designer那么第六步是不需要的,直接make即可生成目标文件。
还有一点需要注意的是,对于使用uic生成后的.h、.c文件可以进行修改,这些修改不会被下一次make覆盖,只要存在了这些文件,那么下一次make时不会再产生相应的文件。从而使自己的修改不会被覆盖。同时,如果想这些文件更新为系统从新产生的文件就必须make clean将他们删除。