如何发布基于Maemo5的Qt程序(打包.deb格式)
2010-08-21 10:32
483 查看
原文链接:如何发布基于Maemo5的Qt程序(打包.deb格式)
鉴于Qt良好的跨平台特性,想要将Qt程序编译移植到Maemo平台上,一般都不会遇到太大问题。
关于怎么安装Maemo开发环境请参考CuteQt网站Maemo相关文章,如果你是Linux用户则有更简单的方法,到Nokia论坛去下载最新版的SDK安装程序,是PythonQt界面的,一口气点确认和下一步就可以。
本文关心的主题是怎么将Qt写的应用程序打包成Maemo的deb格式,方便其他人下载和安装。因为Qt的编译系统是利用自有的qmake,和传统GNU automake的方式不太一样,所以有些细节的地方需要注意。下面我们就以Qt的例子应用wiggly为例,一步步来看如何制作Qt的.deb包。(本文操作环境:Maemo5 SDK的ScratchBox环境中)。
1.先建一个空白的编译目录
目录名要求是包名加版本的格式,那么我么建立一个wiggly-3.23的格式(3.23是google离开拆拿到日子,嗯呐)。2.利用dh_make建立基本的控制文件
进入wiggly-3.23执行以下命令:DEBFULLNAME=”Cute Qt” dh_make –createorig –single -e cuteqt@cuteqt.com -c gpl
如果你的系统里没有dh_make,需要将”dh-make”的软件包装上,以上命令DEBFULLNAME用于指定发布者的名字,–single是指编译的是当个应用,-e后面加发布者的电子邮件地址,-c后面指的是软件的发布模式,这里指的是GPL. 执行以上命令后可以看到在当前目录下多出来一个debian目录,debian目录下有一些debian工具打包时要用到的文件,暂时跳过。
3.将含源代码的wiggly目录加入编译目录
此时,我们的目录机构应该是主目录下有两个子目录,分别为wiggly-3.23/debian和wiggly-3.23/wiggly,前者包含编译控制文件,后者包含源代码。4.在wiggly-3.23增加一个top.pro文件
文件内容为QMAKEVERSION = $$[QMAKE_VERSION]
ISQT4 = $$find(QMAKEVERSION, ^[2-9])
isEmpty( ISQT4 ) {
error(“Use the qmake include with Qt4.4 or greater, on Debian that is
qmake-qt4″);
}
TEMPLATE = subdirs
SUBDIRS = wiggly
前面部分通过qmake版本测得Qt是否为qt4以上版本,后面部分指定子目录,这也是在创建你自己的工程时,根据你的代码目录需要改动的地方。
5.进入源码目录wiggly,修改wiggly.pro
这一步主要改动的是INSTALLS变量,它决定了哪些程序需要打包,以及软件最后在Maemo上的安装路径//wiggly.pro部分内容
target.path = $$PREFIX/bin
desktop.files=wiggly.desktop
desktop.path=/usr/share/applications/hildon/
INSTALLS += target desktop
这里,我选择了最基本的两个元素,应用自身和.desktop文件。.desktop是Maemo应用启动程序用于找到应用程序的入口,它包含了程序的图标,以及应用在程序菜单里要显示的名字和应用程序的执行路径等。Maemo5的.desktop文件路径都在/usr/share/applications/hildon/目录下。.pro文件中files指明了要打包的哪些文件,path指安装到新系统时的目的路径。
6.在wiggly需要新增一个wiggly.desktop文件
[Desktop Entry]Encoding=UTF-8
Version=3.23
Type=Application
Name=Wiggly Example
Exec=/opt/usr/bin/wiggly
Icon=myapp
X-HildonDesk-ShowInToolbar=true
X-Osso-Type=application/x-executable
最关键的变量是Exec,指的是应用程序的路径。如果这个错了,点击应用程序列表里的图标时,这个应用会无法启动。其它部分自己体会:)
7. 回到wiggly-3.23/debian目录中,修改rules文件
该目录中的rules决定了debian在打包时候要执行的操作,核心的区别是传统程序执行./configure && make, Qt的程序是qmake && make//debian/rules原始文件 configure: configure-stamp configure-stamp: dh_testdir # Add here commands to configure the package. touch configure-stamp build-stamp: configure-stamp dh_testdir # Add here commands to compile the package. $(MAKE) #docbook-to-man debian/wiggly.sgml > wiggly.1 touch $@ build: build-stamp | // debian/rules 改动后的文件 builddir: mkdir -p builddir builddir/Makefile:builddir cd builddir && qmakePREFIX=/opt/usr../top.pro build-stamp: builddir/Makefile dh_testdir # Add here commands to compile the package. cd builddir && $(MAKE) #docbook-to-man debian/wiggly.sgml > wiggly.1 touch $@ build: build-stamp |
因为,新rules新增了buiddir单独做编译,所以make clean和make install也稍有不同,参看下表rules剩余的差异部分。
// debian/rules原文件 clean: dh_testdir dh_testroot rm -f build-stamp configure-stamp# Add here commands to clean up after the build process. -$(MAKE) clean dh_clean install: build dh_testdir dh_testroot dh_clean -k dh_installdirs # Add here commands to install the package into debian/wiggly. $(MAKE) DESTDIR=$(CURDIR)/debian/wiggly install | //debian/rules改动后文件 clean: dh_testdir dh_testroot rm -f build-stamp configure-stamp # Add here commands to clean up after the build process. #-$(MAKE) clean rm -rf builddir dh_cleaninstall: build dh_testdir dh_testroot dh_clean -k dh_installdirs # Add here commands to install the package into debian/wiggly. cd builddir && $(MAKE) INSTALL_ROOT=$(CURDIR)/debian/wiggly install |
8. 执行命令将编译目录打包
在wiggly-3.23目录下执行如下命令dpkg-buildpackage -rfakeroot -b
此时,在上一级目录将会生成一个名叫wiggly_3.23-1_i386.deb或wiggly_3.23-1_armel.deb的debian包,这取决于你在x86还是arm下做编译。
9. 可以安装了:)
利用fakeroot dpkg -i wiggly_3.23-1_i386.deb就可以将你的应用安装到系统里。在应用程序列表里就能看到它
相关文章推荐
- 如何解决Qt程序在其他电脑上无法运行的问题(Qt程序打包发布)
- 【Qt】如何打包发布基于Qt4 Windows的软件
- 如何解决Qt程序在其他电脑上无法运行的问题(Qt程序打包发布)
- 如何打包发布基于Qt4 Windows的软件
- 如何打包发布基于Qt4 Windows的软件
- 如何打包发布基于Qt4 Windows的软件
- 如何打包发布基于Qt4 Windows的软件
- 如何打包发布基于Qt4 Windows的软件
- 如何打包发布基于Qt4 Windows的软件
- 如何打包发布基于Qt4 Windows的软件
- 如何打包发布基于Qt4 Windows的软件
- 如何打包发布基于Qt4 Windows的软件
- linux+Qt程序如何打包发布
- 如何打包发布基于Qt4 Windows的软件
- C#如何为winform程序打包发布应用(图解教程)
- Windows平台下QT程序打包发布
- 【打包成exe安装包文件发布你的程序】使用QT联系人管理系统的例子
- Windows环境Qt程序打包发布
- Qt程序打包发布