主题 : [求助]qt2.2.0建置程序时发生错误 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 8997
精华: 0
发帖: 3
金钱: 30 两
威望: 15 点
综合积分: 6 分
注册时间: 2009-09-14
最后登录: 2017-09-13
楼主  发表于: 2009-09-14 17:06

 [求助]qt2.2.0建置程序时发生错误

小弟于 arm-qtopia/hello中运行 ./build 可以顺利产生 hello 二进制档,并可在开发板上运行,但小弟在自行建置一个全新的运用时遇到了些问题,花了一整天时间找寻答案,但找寻目前线上有的qtopia2.2.0开发简介没有找到一篇完整的说明,手册这部份只有说明hello范例的一开始的.pro是"手动编译",让小弟实在摸不着边际。

小弟将我目前运行的步骤写出来,实在是想不到解决方向,才在此发问寻求帮忙,恳请各位大牛协助小弟一下,内容小弟尽量写清楚,希望可以帮助我找到方法,谢谢

1.# source qtopia-2.2.0-FriendlyARM/setQptEnv    (设置arm-qt路径)

2.# mkdir arm-qtopia/test    (建立目录)
3.# cd test
4.建立test.pro    (小弟复制范例Hello的hello.pro修改。原因在于小弟我将setQptenv设置后,无法直接使用progen,须至qtopia-2.2.0-FriendlyARM/tmake/bin/progen下才可使用,且不知道是否运行这个为正确的?)

-----------test.pro内容------------
CONFIG        += qtopiaapp
CONFIG        -= buildQuicklaunch
DESTDIR    = $(QPEDIR)/bin
HEADERS    = test.h
SOURCES    = test.cpp
SOURCES+=main.cpp
INTERFACES    = test.ui
TARGET        = test
-----------------------------------

5.运行qtopia-2.2.0-FriendlyARM/qt2/bin/designer(建立一个test以及一个button生成一个test.ui)

6.#uic -o test.h test.ui (生成.h)
7.#uic -o test.cpp -impl test.h test.ui (生成.cpp)
8.产生main.cpp (小弟复制范例hello/main.cpp 修改)

-----------main.cpp内容------------
#include "test.h"
#include <qtopia/qpeapplication.h>
QTOPIA_ADD_APPLICATION("test",Form1)
QTOPIA_MAIN
-----------------------------------

9.#./build    (使用build是全部参照hello范例使用qmake,小弟参考过hxfirefox大大的方法tmake产生方法与hello范例有所出入,检视过Makefile后,决定依照hello的范例来运用)

接下来产生
make: *** [/opt/FriendlyARM/mini2440/arm-qtopia/qtopia-2.2.0-FriendlyARM/qtopia/bin/test] Error 1这错误

有几个问题还想请教
1.qmake真实路径? 小弟设置了setQptEnv无法直接使用
2.qt2/bin/designer 产生之*.ui 是否直接透过uic产生*.h,*.cpp即可再自行添加就可以运用?

描述:test
附件: test.tar.gz (16 K) 下载次数:12
创新改变世界,技术驱动中国
级别: 论坛版主
UID: 7752
精华: 2
发帖: 55
金钱: 570 两
威望: 276 点
综合积分: 150 分
注册时间: 2009-07-27
最后登录: 2010-03-30
1楼  发表于: 2009-09-14 18:07
先建议你参照mini2440上qtopia应用程序开发(续)中介绍的简单方法再操作一下,应该是不会有问题的,另外,你运行了./build,就不需要设置环境变量了,因为在这个脚本中已经设置了环境变量了。你提出的问题回答如下:
1、qmake应该是在qtopia-FriendlyARM-2.2.0下,一般地你可以通过这个命令在主机/bin下建立一个链接# ln -s /opt/FriendlyARM/mini2440/arm-qtopia/(qmake路径) qmake,这种方法是你的系统中有多个qt版本可以使用的,但是,你在这里完全没必要,因为arm-qtopia已经帮你把所有的一切都安排好了
2、是的,的确是这样就可以了,不过我自己不太使用designer
我现在就帮你编译你的文件
创新改变世界,技术驱动中国
级别: 论坛版主
UID: 7752
精华: 2
发帖: 55
金钱: 570 两
威望: 276 点
综合积分: 150 分
注册时间: 2009-07-27
最后登录: 2010-03-30
2楼  发表于: 2009-09-14 18:28
我已经帮你编译通过了,请你按照我说的方法来进行
1、进入test
2、删除test.ui和Makefile
3、修改test.pro,去掉其中INTERFACE = test.ui的test.ui
4、运行./build
这样就可以编译通过了。
你的错误就是重复定义了,这个问题我也遇到过,这其实要怪我们照猫画虎的时候没有完全学好,虽然你是照这hello的样子写的,但是你应该发现了在其.cpp和.ui中出现了HelloBaseForm和HelloForm两个名字,这是它为了避免出现重复定义时采用的方法,因为采用.ui和uic命令生成的.cpp与.h文件会使用你.ui文件中的窗体名作为类的名字,这样实际在就.ui和.cpp中重复定义了两遍,所以用命令生成这些文件时,应修改类实体名,而不能使用窗体名,该窗体名只能作为基类而不能做实体,否则会出现重复定义问题,这也是我为什么不使用designer的重要原因,不知道我给的解释你满意不满意
级别: 新手上路
UID: 8997
精华: 0
发帖: 3
金钱: 30 两
威望: 15 点
综合积分: 6 分
注册时间: 2009-09-14
最后登录: 2017-09-13
3楼  发表于: 2009-09-14 18:37
谢谢hxfirefox大大,承您说的我这样解释请问是否正确,如有误请指正

1.qmake应该是在qtopia-FriendlyARM-2.2.0 <===这里我find找到在
./dqt/bin/qmake
./dqt/qmake
./dqt/qmake/qmake
./qtopia/bin/qmake
./qtopia/qmake
这里您有提到我可以ln -s /opt/FriendlyARM/mini2440/arm-qtopia/(qmake路径) qmake
但我需要使用哪一个呢?
2.这问题我也不太好意思问,请问"mini2440上qtopia应用程序开发(续)"这边我检查我的光盘,只有用户手册,参考资料内有一份嵌入式应用程序开发综合实例,请问您说的这份吗?
待我成功 再将整理PO上
创新改变世界,技术驱动中国
级别: 论坛版主
UID: 7752
精华: 2
发帖: 55
金钱: 570 两
威望: 276 点
综合积分: 150 分
注册时间: 2009-07-27
最后登录: 2010-03-30
4楼  发表于: 2009-09-15 07:40
1、这个命令使用的是qtopia/bin/qmake,不过一般不需要用,就像我说的这只是在你的系统中有多个Qt 版本时使用,如你有Qt2,Qt3,Qt4,你可以用命令ln -s /(qmake的路径) qmake2(这个qmake是Qt2版本的),ln -s /(qmake的路径) qmake3(这个qmake是Qt3版本的),ln -s /(qmake的路径) qmake4(这个qmake是Qt4版本的),这主要为了你自己便于区分
2、我说的是论坛中我的两篇帖子"mini2440上qtopia应用程序开发"和"mini2440上qtopia应用程序开发(续)",分别介绍了x86和arm下开发的方法,推荐你都是用里面介绍的简单方法
级别: 新手上路
UID: 8997
精华: 0
发帖: 3
金钱: 30 两
威望: 15 点
综合积分: 6 分
注册时间: 2009-09-14
最后登录: 2017-09-13
5楼  发表于: 2009-09-15 09:39
回 hxfirefox 大大 ,感谢您的回覆,昨天晚上试了一下,删除.ui、makefile及修改pro后可以运行,也有添加东西进去,晚点我再把改好的放上。谢谢
嵌入式,求解脱
级别: 新手上路
UID: 80377
精华: 0
发帖: 34
金钱: 175 两
威望: 35 点
综合积分: 68 分
注册时间: 2012-10-23
最后登录: 2015-05-23
6楼  发表于: 2012-12-03 22:33
有qtopia2.2.0应用程序开发手册么?我怎么么找到