Qtopia的编译系统.doc_第1页
Qtopia的编译系统.doc_第2页
Qtopia的编译系统.doc_第3页
Qtopia的编译系统.doc_第4页
Qtopia的编译系统.doc_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Qtopia的编译系统目录1.qmake21.1 pro文件21.2 实例42.Qtopia 编译系统92.1 内部的编译系统项目文件说明112.2 项目文件生成Makefile说明182.3 和分析202.4 configure脚本生成Makefile272.5 Qtopia的编译过程392.5.1 库的编译402.5.2 相互独立的应用程序及插件的编译432.5.3 文件的安装442.5.4 打包分发481.qmake 由于直接给不同的平台和编译器写个Makefile较难且容易出错,Trolltech公司创建了qmake工具来自动生成Makefile。qmake处理对编译器和平台的依赖性以及moc和uic的连编规则,开发者创建一个纯文本的*.pro项目文件来指明他们的源代码文件,然后运行qmake生成适当的Makefile。 在不同的平台上编译应用程序,你需要设置QMAKESPEC环境变量,在Windows下使用Microsoft Visual Studio,要把QMAKESPEC环境变量设置为win32-msvc。在Solaris上使用gcc,把QMAKESPEC环境变量设置为solaris-g+。 在mkspecs中的每一个目录里面,都有一个包含了平台和编译器特定信息的qmake.conf文件。这些设置适用于你要使用qmake的任何项目。1.1 pro文件 工程(pro)文件包含了qmake编译应用(泛指应用程序、库、插件)所需要的全部信息,对于每个应用而言,都有一个pro文件。简单的工程文件仅定义了标准变量来包含源文件和头文件信息,复杂的工程文件会采用控制流来调节编译过程。Qmake在创建Makefile.target的时候会读取pro文件。下面介绍下重要的语法信息并以实例说明:1.语法要点(1)变量Qmake在写Makefile文件时会在工程文件中查找变量信息,然后根据信息的内容来写Makefile文件。HEADERS-工程中的头文件信息,qmake一般会自动提取头文件信息,不需要研发人员手工添加。SOURCES-工程中的源文件信息,qmake一般会自动提取头文件信息,不需要研发人员手工添加。CONFIG-工程配置信息,工程文件中最重要的一个变量,DESTDIR-可执行文件或二进制文件的安装信息INTERFACES-ui文件信息,如果ui文件存在,则会调用uic来进行编译该文件。RESOURCES-资源文件信息TEMPLATE-说明编译过程输出的文件类型是应用程序、库、插件,qmake会根据该变量生成适当的Makefile文件。它允许的值说明如下:app 缺省值,为编译应用程序创建一个makefile。lib 为编译库创建一个makefile。subdirs 为在子目录中编译目录创建一个makefile。vcapp - win32仅创建一个应用程序项目文件。vclib win32仅创建一个库项目文件。TARGET - 可执行应用程序的名称。默认值为项目文件的名称。(如果需要扩展名,会被自动加上。)DEFINES - 应用程序所需的额外的预处理程序定义的列表。INCLUDEPATH - 应用程序所需的额外的包含路径的列表。DEPENDPATH - 应用程序所依赖的搜索路径(2)常用函数CONFIG(config)-通过设置范围条件,可以检查某些模块是否可用,如判断OpenGL模块是否可用:CONFIG(opengl)message(Building with OpenGL suport);elsemessage(OpenGL support is not available);contains(variablename,value)检查variablename中是否包含value,如果包含,则返回true,否则返回false。如检查驱动中是否包含了网络驱动:contains( drivers, network )message( Configuring for network build. )HEADERS += network.hSOURCES += network.cppexists(filename)测试文件filename是否存在。include(filename)测试文件filename是否包含在当前工程中。如果没有包含,将该文件包含。for(iterate, list)一个提供循环测试能力的函数。system(command)在Shell中执行command命令。1.2 实例下面用一个实际使用的.pro文件为例来说明.pro文件中的语法,这个文件将各个.cpp及.h文件连接成一个应用程序,分析如下:#qt表示连接qt相关库,warn_on表示打印警告信息,thread表示这是一个多线程应用程序。CONFIG += qt warn_on thread TEMPLATE = app #创建应用程序的Makefile#函数include把文件default.cfg的内容插到这里,函数返回值表示是否执行成功。include(./$PRODUCT/default.cfg)merge_app DEFINES += TEST_MERGE_APPLICATIONS#放置可执行程序目标的目录。DESTDIR = $(TEST_APP_BASE)/am/data#可执行应用程序的名称。默认值为项目文件的名称。TARGET = am#Java Session:#应用程序中用到的预处理定义列表。DEFINES += JAVA_SESSIONDEFINES += AMRAD_DEBUG_MODE#应用程序所需的头文件列表HEADERS = $(TEST_APP_BASE)/am/mainscreen/engine/AM_StartupInit.h $(TEST_APP_BASE)/testsync/ui/usb_control.h#应用程序所需的源文件列表SOURCES = $(TEST_APP_BASE)/testsync/ui/usb_control.c#如果MAKE_FTR_LED存在于DEFINES变量的值的列表中contains(DEFINES, MAKE_FTR_LED)HEADERS += $(TEST_APP_BASE)/am/mainscreen/engine/AM_LED_EventManager.hSOURCES += $(TEST_APP_BASE)/am/mainscreen/engine/AM_LED_EventManager.cpp #应用程序的include路径的列表INCLUDEPATH += $(TEST_APP_BASE)/include $(TEST_APP_BASE)/utility/inc /vobs/test_api/code/utility/inc #unix表示qmake将在unix模式运行,这种模式下将使用unix文件命名和路径转换,#在unix下这是缺省模式。#LIBS变量包括连接进项目的库的链表,如果你使用了-L/-l的unix转换,#那么,你可以在交叉编译方式下任意使用它们,#qmake将会在Windows上正确使用这些库(即传递库的全路径给连接器),#qmake在-L所指路径下找到-l所指的库。unix:LIBS += -L$(TEST_APP_BASE)/libunix:LIBS += -ltestdb#如果CONFIG变量链表中含有debug,即是调试版本contains(CONFIG, debug) contains(QMAKE_LINK, g+) #含有g+,即x86下的调试版本 DEFINES += AM_X86 unix:LIBS += -ltest-x86-d unix:LIBS += -ltestasprofile-x86-d contains(QMAKE_LINK, arm-linux-g+) #含有arm-linux-g+,即arm cpu下的调试版本unix:LIBS += -ltest-xscale-dunix:LIBS += -ltestringtone-play-xscale-dunix:LIBS += -ltestasprofile-xscale-d#CONFIG变量中含有relese,表示是发布版本contains(CONFIG, release) contains(QMAKE_LINK, g+) #含有g+,即x86下的发布版本 DEFINES += AM_X86 unix:LIBS += -ltestopenwindow-x86-runix:LIBS += -lteststaticidle-x86-r #含有arm-linux-g+,即arm cpu下的发布版本contains(QMAKE_LINK, arm-linux-g+) unix:LIBS += -ltestam-xscale-r unix:LIBS += -ltestopenwindow-xscale-r # 这是国际化语言文件TRANSLATIONS = $(TEST_APP_BASE)/am/am_zh-cn.ts注:pro文件完成后,使用qmake -o Makefile.target *.pro 命令生成Makefile.target文件2.Qtopia 编译系统Qtopia通过.pri和.pro文件对编译系统进行分层管理,.pri和.pro文件都是被qmake使用的项目文件,它们的格式一样,.pri文件被.pri或.pro文件包括(使用include语句),.pro 文件直接被用来产生Makefile文件。Qtopia项目文件的层次及configure脚本生成的Makefile层次如图1所示。configure脚本通过用户选择的编译选项生成config.pri项目文件,在编译的过程中会用这些编译选项。.qmake.cache用来重定向到config.pri文件。configure脚本使用qmake命令将各个目录下的.pro文件生成Makefile.target。顶层的Makefile.src-component包括的是相互无依赖关系的应用程序或插件的项目,顶层的Makefile.target是应用程序所依赖的库的项目。顶层的Makefile是用户在configure脚本中手动配置的编译入口选项。在使用make命令进行编译时,编译器先从Makefile找到编译入口,再使用Makefile.target编译被依赖的库,同时Makefile.target文件中使用make来调用Makefile.src-component来编译无依赖关系的应用程序及插件。图1Qtopia项目文件的层次及configure脚本生成的Makefile层次2.1 内部的编译系统项目文件说明Qtopia的顶层项目文件为文件,它包括了下面几个.pri项目文件,这些.pri文件用来定义了哪些源代码文件需要编译,它们提供了分层管理,方便编译时的文件选择。与生成Qtopia的顶层Makefile相关的项目文件说明如下:$QPEDIR/src/config.pri 被configure脚本产生,configure脚本将用户选定的选项转换成参数变量。config.pri在其它每个项目文件处理之前被处理,它的值可被重写。src/global.pri在其他每个项目文件处理之后被处理,它存有使用可用的设置,如:如何编译ipkg,如何连接通用库等。src/ipk_groups.pri在大多情况下,一个项目为一个ipkg。有时候,多于一个项目在一个ipkg中。这个文件定义了如何编译这样的一个包。projects.pri统率来自general.pri、commercial.pri、custom.pri和local.pri的一个项目链表。和指定编译的项目。文件统率需要以特定次序编译的项目,而文件统率能以任何次序被编译的项目。来自的项目在来自项目之前被编译。是用来产生顶层的Makefile。它还知道如何编译在控件文件中的ipkg,因为它们没有.pro文件。其中,projects.pri文件中包括的几个.pri文件说明如下:general.pri 链接了在所有Qtopia 源代码包里的构件,包括所有的GPL和商业版下发布的Qtopia核心源代码。commercial.pri 链接了商业版特有的Qtopia源代码包。custom.pri 链接了用户配置部分的源代码包。在上面几个.pri项目文件中,通过定义几个项目链表变量,将各种源代码分类链接在一起。项目链表按次序处理,这样所有的库在应用程序之前编译。项目链表说明如下:LIBRARY_PROJECTS-应用程序和插件用的库文件源代码链表。APP_PROJECTS-应用程序源代码链表。PLUGIN_PROJECTS-插件和java程序的源代码链表。THEME_PROJECTS-主题相关的链表。(1)projects.pri文件projects.pri文件它将不同类型的源代码分别使用不同的.pri文件来描述,projects.pri文件统管这几个.pri文件。projects.pri文件列出如下:!contains( processed_pri, projects.pri ) processed_pri += projects.pri include($QTOPIA_DEPOT_PATH/src/general.pri) include($QTOPIA_DEPOT_PATH/src/commercial.pri) include($QTOPIA_DEPOT_PATH/src/custom.pri) include($(QPEDIR)/src/local.pri) LIBRARY_PROJECTS=$CORE_LIBRARY_PROJECTS $LIBRARY_PROJECTS # 如果LIBRARY_PROJECTS 中包括了libraries/handwriting ,则因为重复必须删除一个 !contains(LIBRARY_PROJECTS,libraries/handwriting) PLUGIN_PROJECTS-=plugins/inputmethods/handwritingplugins/inputmethods/fshandwritingAPP_PROJECTS -= settings/handwriting (2)config.pri文件config.pri文件是在运行configure脚本的过程中产生的,它用变量说明了用户给出的选项,config.pri文件部分说明如下:!contains( PROCESSED_PRI, config.pri ) #确保include进一次PROCESSED_PRI += config.priQTOPIA_DEPOT_PATH=/home/test/qt_soft/qtopia-free-2.1.1#源代码所在目录QTOPIA_ICON_SIZES=14 16 22QTOPIA_DISP_SIZES= PQTOPIA_DISP_WIDTH=QTOPIA_DISP_HEIGHT=QTOPIA_DISP_ROTS=0 90 180 270CONFIG += warn_on #打印警告信息CONFIG+=debug #编译成调试版本 . QMAKE_POST_INCLUDE_FILES=$QTOPIA_DEPOT_PATH/src/global.pri LANGUAGES=en_US . QPE_VERSION=2.1.1 CONFIG+=buildQtopia #编译成Qtopia版本 CONFIG+=defaultbuttons QTOPIA_ARCHITECTURE=x86#是能x86下运行的版本 QTOPIA_ARCH=x86 QCONFIGDEFINE=QCONFIG=qconfig-qpe.h . CONFIG+=qt3 include($QTOPIA_DEPOT_PATH/src/projects.pri)(3)ipk_groups.pri文件ipk_groups.pri文件定义了安装插件相关的变量名,其中的一个calc包的定义列出如下:#calc包QTOPIA_CALC_PACKAGE=libraries/qtopiacalcapplications/calculatorplugins/calculator/simplecontains(QTOPIA_CALC_PACKAGE,$QTOPIA_ID) PACKAGE_NAME=qpe-calculator # 插件名 IPK_GROUP_PROJECTS=$QTOPIA_CALC_PACKAGE#插件的描述 PACKAGE_DESCRIPTION=A pluggable calculator for the Qtopia environment that includes a simple interface.(4)general.pri文件general.pri文件定义了需要加入的普通项目,即需要加入的核心应用程序以及它们所需要的库和插件,general.pri文件部分列出如下:SERVER=server#最基本的库,必须加入CORE_LIBRARY_PROJECTS += qt libraries/qtopiaCORE_LIBRARY_PROJECTS+=libraries/qtopia1.!QTOPIA_CORE #核心库 LIBRARY_PROJECTS+=libraries/qtopiapimlibraries/mediaplayerlibraries/qtopiacalc !QTOPIA_PHONE:THEME_PROJECTS+=mediaplayer/techno LIBRARY_PROJECTS+=libraries/qtopiapim1.!QTOPIA_CORE #核心应用程序 APP_PROJECTS+=applications/addressbook applications/calculator applications/camera applications/clock .PLUGIN_PROJECTS+= plugins/decorations/flat plugins/fontfactories/freetype plugins/imagecodecs/notepad .QTOPIA_PDA #PDA需要加入的应用程序及插件 APP_PROJECTS+=applications/today games/mindbreakersettings/appservices settings/buttoneditor . PLUGIN_PROJECTS+=plugins/applets/batteryappletplugins/applets/brightnessplugins/applets/clipboardappletplugins/applets/clockapplet. .(5)global.pri文件global.pri项目文件在其他每个项目文件后执行,它存有各种全局的设置,如:如何编译ipkg,如何连接通用库及库之间的依赖关系等。global.pri项目文件部分列出如下:!contains( PROCESSED_PRI, global.pri ) #确保include进一次 PROCESSED_PRI += global.pri include($QTOPIA_DEPOT_PATH/src/projects.pri) #将所有的项目放在一个链表中 ALL_PROJECTS=$LIBRARY_PROJECTS $APP_PROJECTS $PLUGIN_PROJECTS $SERVER $THEME_PROJECTS#各种通用库的连接方法,这里的依赖关系转换成Makefile.target中库的依赖关系。 !contains(TEMPLATE,subdirs) qtopiaapp:CONFIG+=qtopia qtopia:CONFIG+=qtopialib qtopiainc# 加入基本库的连接到LIBS中qtopiadesktop CONFIG += desktop !contains(TARGET,qdbase) LIBS = -lqd-qdbase $LIBS win32:DEFINES += QDBASE_DLL qtopialib:LIBS+=-lqd-qpe . .#设置路径CONFIG+=link_prl create_prl depend_prlqtest:INCLUDEPATH+=$(QTESTDIR)/qtestlib.# Ipk groupsinclude ($QTOPIA_DEPOT_PATH/src/ipk_groups.pri).desktop requires(!isEmpty(DQTDIR) CONFIG+=thread INCLUDEPATH=$DQTDIR/include $INCLUDEPATH DEPENDPATH=$DQTDIR/include $INCLUDEPATH win32:QMAKE_MOC=$DQTDIRbinmoc.exe else:QMAKE_MOC=$DQTDIR/bin/moc win32:QMAKE_UIC=$DQTDIRbinuic.exe else:QMAKE_UIC=$DQTDIR/bin/uic QMAKE_INCDIR_QT=$DQTDIR/include QMAKE_LIBDIR_QT=$DQTDIR/lib .# Packagingqtopiadesktop mands=$COMMAND_HEADERecho Not building packages for QtopiaDesktop . sdk.depends+=install devsdk.depends+=sdk QMAKE_EXTRA_UNIX_TARGETS+=packages sdk devsdk !isEmpty(DQTDIR):QMAKE_EXTRA_UNIX_TARGETS+=lupdate2.2 项目文件生成Makefile说明所有的qmake编译命令定义qws/*(如:QMAKESPEC=qws/linux-generic-g+)在$QPEDIR/src/config.pri文件中有一个明确有指定。来自Qtopia源代码树的项目接受这个规则,但还需要处理外面不遵守这个规则的外部的项目,还有Qtopia桌面项目不使用qws/* 这样的QMAKESPEC值。为了处理这种情况,configure运行时将编译器选择配置写入到$QPEDIR/src/.qmake.cache文件中,文件.qmake.cache设置了一个标识并包括进了(即用include语句)$QPEDIR/src/config.pri文件。qmake通过访问.qmake.cache文件来访问到项目文件config.pri。config.pri提供了qmake执行的命令参数选项(由用户指定)。编译器在处理完主项目文件后处理global.pri文件。重要的.pri文件有保护语句,确保.pri文件仅被执行一次。configure脚本执行后,它产生Makefile文件,当你输入make命令时,make命令读取Makefile文件,Makefile文件决定编译需要做的工作。由于qmake执行后的输出与Qtopia的需要有一些差别,因此,qmake产生的文件命名为Makefile.target。尝试手动再次创建Makefile是不安全的,你可能重写了configure脚本创建的特定的Makefile。重运行configure脚本是创建Makefile和Makefile.target的惟一方法。然而,为了允许更简单的开发,可以运行make qmake来再产生Makefile.target文件,使用make regenerate产生Makefile文件。特定的Makefile指明了特定的安装目录。有两个参数PREFIX和DPREFIX分别指定了Qtopia和Qtopia Desktop的安装位置。configure把安装位置的缺省值放在特殊的Makefile中,但可通过命令行重写安装位置(如:make PREFIX=/opt/Qtopia DPREFIX=/opt/QtopiaDesktop)。为了允许最大的弹性,特殊的Makefile使用定义在Makefile.target中的所有目标。如果Makefile.target被重建,目标将不再与Makefile中目标相匹配,运行make regenerate将矫正这个错误。特定的Makefile将PREFIX (或DPREFIX)转换成INSTALL_ROOT,因为INSTALL_ROOT是qmake给安装prefix使用的变量。如果你没有一个特殊的Makefile(如:因为你在$QPEDIR以外的目录手动运行qmake),你必须设置INSTALL_ROOT到你安装的位置(如:INSTALL_ROOT=/opt/Qtopia)。更好的方法是传递这个目录到configure中(如:configure -build /path/to/my/extra/stuff)。2.3 和分析(1)文件文件包括与编译次序无关的项目,一般是一些独立的应用程序和插件,文件列出如下:TEMPLATE=subdirsinclude($QTOPIA_DEPOT_PATH/src/projects.pri)# 与编译次序无关的项目SUBDIRS+=$APP_PROJECTS $PLUGIN_PROJECTS $SERVER!isEmpty(THEME_PROJECTS):SUBDIRS+=./etc/themes!isEmpty(EXTRA_SUBDIRS):SUBDIRS+=$EXTRA_SUBDIRS(2)文件文件用来产生顶层的Makefile,它使用general.pri文件定义了需要编译的核心应用程序及它们对应的库、插件,文件定义了作为SDK所需要的应用程序、库和字体以及它们的安装路径等。文件分析如下:#这是一个特殊的模板,它可以创建一个能够进入特定目录并且为一个项目文件生成makefile还调用make。TEMPLATE=subdirs#如果buildQtopia条件为真,编译QtopiabuildQtopia #$表示得到变量的值 include($QTOPIA_DEPOT_PATH/src/projects.pri)#将.pri文件包含进这里 CONFIG+=ordered #在使用subdir模板时,SUBDIRS存放有所有查找项目文件的子目录 SUBDIRS+=$LIBRARY_PROJECTS buildQtopiadesktop:SUBDIRS+=qtopiadesktop#定义软件包mands=$COMMAND_HEADERmkdir -p $(QPEDIR)/ipkg;#如果目录不存在,创建目录cd $(QPEDIR)/ipkg;for i in #循环,i为找到的文件名#在qt目录下按照文件名查找*.control文件find $QTOPIA_DEPOT_PATH/src/qt -name *.control find $QTOPIA_DEPOT_PATH/services -name *.control find $QTOPIA_DEPOT_PATH/sounds -name *.control find $QTOPIA_DEPOT_PATH/misc -name *.control; do echo Packaging $i; $QTOPIA_DEPOT_PATH/bin/mkipks $i;#打包done;nonpropackages.CONFIG+=phony no_pathbuildQtopia QMAKE_EXTRA_UNIX_TARGETS += nonpropackages packages.depends = nonpropackages#依赖关系mands=$COMMAND_HEADERfor i in #按照文件名查找*.control文件 find $QTOPIA_DEPOT_PATH/services -name *.control find $QTOPIA_DEPOT_PATH/sounds -name *.control find $QTOPIA_DEPOT_PATH/misc -name *.control ;do echo Installing files listed in $i; #从$i文件中找到头部为Files:的行(表示行头可以有空格),并通过sed命令将Files:替换为空格,然后再传给FILELIST FILELIST=grep Files: $i | sed -e s/Files:/; -z $FILELIST | for j in $FILELIST; do dir=dirname $j;mkdir -p $(INSTALL_ROOT)/$dir;/如果目录不存在,创建目录 #INSTALL_ROOT为opt/Qtopi,安装拷贝$j到$dir下,并设置属性eval install -c $(QPEDIR)/$j $(INSTALL_ROOT)/$dir; done;done;nonpropackagesinstall.CONFIG+=no_pathbuildQtopia:INSTALLS+=nonpropackagesinstall# 安装拷贝字体文件,fonts为字符串链表数组,存有字体的名字、大小及安装路径等的字符串链表。contains(QTOPIA_DISP_ROTS,0):fonts.rotations=50,50i,75,75icontains(QTOPIA_DISP_ROTS,90):fonts.rotations+=*_t5contains(QTOPIA_DISP_ROTS,180):fonts.rotations+=*_t15contains(QTOPIA_DISP_ROTS,270):fonts.rotations+=*_t10QTOPIA_PHONE #如果QTOPIA_PHONE条件为真 # 仅Helvetica和固定字体,字体大小仅从8.0pt到18.0pt fonts.sizes=80,100,120,140,180!QTOPIA_PHONE # 更多的字体,所有尺寸 fonts.files+=micro fonts.files+=smallsmooth fonts.files+=smoothtimes fonts.sizes=*buildQtopia fonts.files+=helvetica fonts.files+=fixed fonts.path=/lib/fonts #安装的路径为/lib/fonts目录 mands=$COMMAND_HEADER -z $fonts.rotations | for rt in $fonts.rotations; do -z $fonts.files | for f in $fonts.files; do#组合成字体文件名,得到诸如helvetica_120_75i_t15.qpf这样的文件名,#$QTEDIR/lib/fonts下的指定文件名字体文件拷贝到$QTOPIA_PATH/lib/fonts目录下。for file in $QTEDIR/lib/fonts/$f_$fonts.sizes_$rt.qpf; do if -f $file ; then#如果是文件 #安装拷贝到$QTOPIA_PATH/lib/fonts目录下install -c $file $(INSTALL_ROOT)$fonts.path; fi;done; done;done INSTALLS+=fonts#定义编译SDK的项目文件及应用程序,SDK是运行Qtopia所需要的类库及工具应用程序等。!win32:!mac #如果不是win32平台,不是mac平台#设置执行make install时qmake的INSTALL变量,指定安装的文件源及安装路径。#定义qmake需要安装拷贝的文件 sdk_qmake.files=#在源代码中需要安装拷贝的文件$(QPEDIR)/bin/qmake$(QPEDIR)/bin/nct_lupdate$(QPEDIR)/bin/installpic$(QPEDIR)/bin/mkipks sdk_qmake.path=/bin#安装拷贝的目的路径 sdk_qmake.CONFIG=no_default_install#定义不同平台编译器的选择路径 sdk_mkspecs.files=$QTOPIA_DEPOT_PATH/mkspecs sdk_mkspecs.path=/ sdk_mkspecs.CONFIG=no_default_install#定义编译时用到的include文件及路径 sdk_qt_includes.files=$QTEDIR/include/* sdk_qt_includes.path=/include sdk_qt_includes.CONFIG=no_default_install sdk_pri.files=#定义.pri项目文件的路径$QTOPIA_DEPOT_PATH/src/config.pri$QTOPIA_DEPOT_PATH/src/global.pri$QTOPIA_DEPOT_PATH/src/projects.pri$QTOPIA_DEPOT_PATH/src/general.pri$QTOPIA_DEPOT_PATH/src/ipk_groups.pri$(QPEDIR)/src/.qmake.cache#这个文件中有include ($QPEDIR)/src/config.pri语句 !free_package:sdk_pri.files+=$QTOPIA_DEPOT_PATH/src/commercial.pri sdk_pri.path=/src sdk_pri.CONFIG=no_default_install #定义样例应用程序的路径 sdk_examples.files=$QTOPIA_DEPOT_PATH/examples sdk_examples.path=/ sdk_examples.CONFIG=no_default_install #将定义好的文件路径字符串数组变量加入到INSTALL中 INSTALLS+=sdk_qmake sdk_mkspecs sdk_qt_includes sdk_pri sdk_examples sdk.depends+=install_sdk_qmake install_sdk_mkspecs install_sdk_qt_includes install_sdk_pri install_sdk_examples#定义安装qtutils(Qt应用程序)字符串链表数组 !isEmpty(QTEDIR) sdk_qtutils.files=#定义Qt/Embedde拷贝安装的应用程序文件名 $QTEDIR/bin/moc $QTEDIR/bin/uic $QTEDIR/bin/designer $QTEDIR/bin/qvfb #根据条件定义需要安装的文件 !exists($QTEDIR/bin/qvfb):sdk_qtutils.files+=$QTEDIR/tools/qvfb/qvfb QTOPIA_PHONE:sdk_qtutils.files+=#定义手机版本的qvfb运行设备仿真图形文件 $QTEDIR/tools/qvfb/SmartPhone.skin $QTEDIR/tools/qvfb/TouchscreenPhone.skin !QTOPIA_PHONE:sdk_qtutils.files+=#定义PDA版本的qvfb运行设备仿真图形文件 $QTEDIR/tools/qvfb/QtopiaPDA.skin sdk_qtutils.path=/bin#定义安装路径 sdk_qtutils.CONFIG=no_default_install#将定义好的文件路径字符串数组变量加入到INSTALL中 INSTALLS+=sdk_qtutils sdk.depends+=install_sdk_qtutils #定义国际化相关的应用程序文件及安装路径 !isEmpty(DQTDIR) #D

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论