Linux下Qt工程文件

Linux下Qt工程文件

说明:由参与的Windows下VS+Qt为主要开发环境的C++桌面端项目,移植到银河麒麟桌面系统(linux),针对其后续的配置工程文件



一、工程文件说明

工程文件.pro为主体,其中包含头文件(.h, .hpp),源文件(.cpp),Qt的Ui文件(.ui),资源文件(.qrc),以及多用于作为补充的(.pri)
往往.pro文件通过引用与之对应的pri文件,用pri文件说明该工程中的文件,而在.pro文件中仅仅包含Qt加载的模块,生成的模块名,宏定义,引用三方库中的头文件路径,以及动态库等

二、文件编写

说明:工程文件的文件引入可直接通过右键项目栏下的工程批量导入

1.基本关键字

项目中未涉及到的不做说明

1,Qt += xxx/ Qt -= xxx
用于引入或者去除Qt相关模块加载

2. TARGET = xxx
该工程最后生成的库名(linux下生成动态库libxxx.so)

3. CONFIG += xxx
定义一些配置信息
举例:
CONFIG += DEBUG
设置版本为debug版本

4. DEFINES += xxx
宏定义,一般用于涉及到该编译环境的相关说明
举例:
DEFINES += OS_LINUX
DEFINES += _WIN32

6. HEADERS +=
头文件路径,可用绝对路径和相对路径,但为了项目的可移植性,使用相对路径即相对于该pro文件(../ ./),
该处内容可通过右键导入,自动在.pro文件中生成

7. SOURCES +=:
工程引入的源文件,说明同2.1.4

8. FORMS +=
工程中的ui文件,说明同2.1.4,实际上本质是引入类似xml结构的文件,Qtcreator编译生成与之对应的ui_xxx.h文件

9. LIBS +=
用于引入工程依赖的静态库和动态库路径
举例:
-L../eccodes/lib/    -leccodes
说明:引入../eccodes/lib相对目录下的libeccodes.so动态库

10. INCLUDEPATH +=
工程引入的头文件路径

11. DESTDIR +=
编译生成的文件路径

12. include(path/xxx.pri)
.用于.pro文件包含相关.pri文件
path:该pri文件相对于pro文件的相对路径

.pri文件中引入文件的路径是相对于其被引入的.pro文件,理论上,.pri文件仅仅充当文本的作用,工程文件执行时,pri中的内容不做处理,直接原始并入pro文件,.pro文件可为多个子工程公共引用,也可特异性使用

2.补充语法

1.\ 用于换行书写,#为注释起始符
2. 针对编译不同版本
CONFIG(debug, debug | release) 
{
#添加编译debug版时,指向的三方库的debug版的动态库
} 
else {
#添加编译release版时,指向的三方库的release版的动态库
}

3.相关错误

1.项目导入编写好的主工程文件后,生成相关.pro.user文件,
其中包含该工程的路径以及相关信息,当项目在其他环境需要重新编译时,需要删除该文件,避免报错
2.编写.pro文件时,上一项结束相关添加后,无需添加 "\",
避免由于下一关键字与上一项之间由于未换行,导致未知的错误,例如工程中相关文件在编译时的缺失
3.通过INCLUDEPATH或引入同名文件,依照先后顺序进行查找链接
4.单单修改pro文件后,或出现工程并不会重新编译的情况,需要清除,重新编译

三、相关调试指令

LD_LIBRARY_PATH=./PATH ldd -r libxxx.so | c++filt

解释:LD_LIBRARY_PATH: 指定环境变量,即该动态库运行时所需依赖的库,路径之间以";"隔开,c++filt: 将内容解释为C++规范,即翻译相关的类型说明。常用于查看未定义实现的变量或类成员方法以及链接库正确与否

总结

初次接触,遇到的问题千奇百怪,形形色色的坑几乎都踩过,意外也为后续的开发,积累了难得的经验


说明:笔者工作和开发时间短暂,文章难免出现纰漏与错误,虚心接受批评指正与补充

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值