版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、写这篇文章的目的是为了让Qt像VC+那样,支持一个工程包含多个项目。即1个App+多个动态库。本案例以1个App+1个共享库为例:工程源码我已上传1、在D盘创建空文件夹qMulti2、使用QtCreator创建App应用程序:BigWay。注意:创建模板是App,存放路径是D:qMulti创建完成后,请关闭当前项目。IQtQuiick1Txt40X14TkFliagjm1Q*防&蚊的物件CHJ£3、使用QtCreator创建共享库项目:SmallBoy。注意:创建模板是C+lib,存放路径是D:qMulti*殍r-'&tomsiiict,/妆-v£(
2、健一队基于仲介曲CH库.,用于QPI勺*riLgd。,)运行时肺用的共享CH主,在M也网把中融播机安用苑箕立寓蹄直珠的+白pES项目介绍和位置本咫异w;僦律一个:*库:1目.突出其工立<1B.色星第搔:心n通力学"的江目3545忖一步四51,拘|创建完成后,请关闭当前项目。4、App和Lib创建完成之后,D:qMulti的情况如下:我们手动新建一个文本文件D:qMultiqM,内容如下:TEMPLATEsubdirs#表示这个是Qt跨目录,由多个子项目(如1个应用程序+多个共享库)组成的大项目SUBDIRSSmallBoyBigWay#大项目包含的各个子项目,其
3、中BigWay是应用程序,SmallBoy是共享库CONFIG=ordered#CONFIG选项要求各个子项目按顺序编译,子目录的编译顺序在SUBDIRS中指明到此为止,情况如下:5、使用QtCreator打开大项目qM,可以看到项目树形结构如下:项目一定G日+X!?显Smlti向qWulti一jr*-电斯图町园BigWiy.pre-$ICS头文件口maillwindbw.工-培源文件千日E&ilLUp丁,"mLLHAlTldoYf.Cpp:向,/界面文件盟ina_inwiniow.ni-,血SmallDoy酹SmellBoypro自头文件IqsiHllbcy
4、.hTsmkllbvy.gX0bal.h闩区'源文件弓qsihallboy.cp(1)原始的BigW文件是这样的:#ProjectcreatedbyQtCreator2014-04-13T20:18:17#QT+=coreguigreaterThan(QT_MAJOR_VERSI0NQT+=widgetsTARGETBigWayTEMPLATEappSOURCE=main.cppmainwindow.cppHEADERS+=mainwindow.hFORMS+=mainwindow.ui我们将其修改为:#ProjectcreatedbyQtCreator2014-04-13
5、T19:02:41#QT+=coregui#需要的Qt库greaterThan(QT_MAJOR_VERSI0NQT+=widgetsTARGETBigWay#表示编译后的库名字为BigWayTEMPLATEapp#表示项目是应用程序模式DESTDRJbin#定义项目编译之后生成的结果文件的存放路径win32#表示Windows环境的特殊设置,这个大括号不能单独放在下一行,否则编译会报错LIBS+=./bin/SmallBoy.lib即含项目需要用到的共享库unix#表示Linux环境的特殊设置,这个大括号不能单独放在下一行,否则编译会报错LIBS+=./bin/libSmallBoy.so#
6、包含项目需要用到的共享库,注意文件名多了关键字"lib"|,扩展名是.soSOURCES#项目中的所有源文件的列表mainwindow.cppHEADERS+=mainwindow.h#项目中的所有头文件的列表FORMS+=mainwindow.ui#项目中的所有.ui文件(由Qt设计器生成)的列表(2)原始的SmallB文件是这样的:#ProjectcreatedbyQtCreator2014-04-13T20:24:55#QT-=guiTARGETSmallBoyTEMPLATElibDEFINE9=SMALLBOY_LIBRARYSOURCE+=qsmal
7、lboy.cppHEADERS=qsmallboy.hsmallboy_global.hunixtarget.path=/usr/libINSTALLS+=target我们将其修改为:#ProjectcreatedbyQtCreator2014-04-13T19:04:24#QT=gui#不需要Qtui库TARGETSmallBoy#表示编译后的库名字为SmallBoyTEMPLATSib#表示项目是共享库模式DEFINE9=SMALLBOY_UBRAR项目所需的额外的预处理程序定义的列表DESTDIR./bin#定义项目编译之后生成的结果文件的存放路径SOURCES=qsmallboy.cp
8、p#项目中的所有源文件的列表HEADERS#项目中的所有头文件的列表smallboy_global.hwin32#表示Windows环境的特殊设置,这个大括号不能单独放在下一行,否则编译会报错unix#表示Linux环境的特殊设置,这个大括号不能单独放在下一行,否则编译会报错target.path=/usr/libINSTALLS+=target6、Linux环境下使用如果把完整的项目源码qMulti拷贝到UbantuLinux下的Qt编译,编译过程一切OK。但是运行时会报错,说"errorwhileloadingsharedlibraries:libSmallBoy.so.1:ca
9、nnotopensharedobjectfile:Nosuchfileordirectory原因指的是Linux下的共享库路径配置不正确,找不到libSmallBoy.so库文件。默认的linux共享库搜索路径为/lib和/usr/lib两个目录(不包含子目录)。解决方案有两种:(1)把编译生成的四个.so文件全部拷贝到文件系统的路径/usr/lib之下,需要管理员权限。libSmallBoy.sDlibSmallBoy/so.llibSmalllBoyso.1.0libSmallBoy.so.LO.O|再运行程序,OK。(2)修改Linux环境变量LD_LIBRARY_PATH,把Qt编程生
10、成的路径加入。exportLD_LIBRARY_PATH=/usr/local/lib在终端里运行上面这行命令,再运行程序,如果正常就说明解决问题。但是该方法只是临时设置变量LD_LIBRARY_PATH,下次开机,一切设置将不复存在;7、换一种思路建项目之前步骤14讲的是先建项目再建qM文件。其实我们可以采取逆序,先建qM文件,后建子项目SmallBoy和BigWay。我们手动新建一个文本文件D:qMultiqM,内容如下:TEMPLATEsubdirs#表示这个是Qt跨目录,由多个子项目(如1个应用程序+多个共享库)组成的大项目CONFIG=ordered#CONFIG选项要求各个子项目按顺序编译,子目录的编译顺序在SUBDIRS中指明或者用QtCreator新建子目录项目qMulti:粤McPepjirct现目鱼生桂宝本及地踞却愈目导入项目文件用小Cj1:diupwL语一15枝:创江天于非如二的子目录飞日.遭无时让其高地目胡纲猛晒空均.专特的千白r;r
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 家长会公开课件
- 体格检查-2胸课件
- 研究组业务招待费通报表
- 2024届江苏省盐城市盐城初级中学新高考数学试题一轮复习专题跟踪检测试题
- 2024届江苏省无锡市惠山六校联考高三2月阶段性测试数学试题
- 《4长方形正方形面积的应用》教案
- 四川省广安友实学校2024-2025学年八年级上学期12月月考数学试题(含答案)
- 江苏省盐城市东台市第五教育联盟2024-2025学年九年级上学期12月月考语文试题
- 珍惜时间与高效学习主题班会
- 年终工作总结
- 脂肪抽吸手术知情同意书
- 汉字演变史-英文版教学课件
- 接触网安全巡检装置2C
- 性能测试报告模板-2
- 电商直播项目投资计划书
- 《医学影像设备学》习题库(含参考答案)
- 2023年药典通则1105非无菌产品微生物限度检查
- 施工质量目标、质量保证体系及措施
- PDCA提高卧床患者踝泵运动锻炼的正确率
- 建筑工程公司日常行政办公管理制度
- 胫骨平台骨折临床路径(2019年版)
评论
0/150
提交评论