QT & Qmake 笔记

文章目录

  • 概述
  • QT修改样式
  • qmake
    • 概述
    • 库引用和库路径指定
    • QT创建动态库和使用
      • 小例子
        • 写动态库
        • 用动态库
  • 参考资料
  • 附录

概述

需要先安装osg,然后再编译安装osgQOpenGL的插件。
其中,osgQOpenGL是OSG嵌入到qt中的一种实现方式,换言之,能够支持QT的一个osg插件

QT修改样式

styleSheet:

background-image:url("/home/orbbec/Pictures/explore-share-image-1280x720.png")
在这里插入图片描述

qmake

概述

可以通过qmake命令,编译pro文件来生成Makefile。
Makefile保存了编译器和链接器的参数选项,以及所有源文件之间的关系。

具体命令为:

 qmake "CONFIG += AAA BBB CCC" xxx.pro -o Makefile

xxx.pro文件的内容可以是:

CONFIG += staticlib
DEFINES += DDD_FUNC
 
# CONFIG 变量的所有值都可以直接用作条件语句的条件  !!!!!!!
 
AAA {
    DEFINES += AAA_FUNC    # 有这个CONFIG参数,所以会执行这条语句
}
 
DDD {
    DEFINES += DDD_FUNC    # 没这个CONFIG参数,所以不会执行这条语句
}

库引用和库路径指定

  • $$PWD 是项目的当前路径;

  • LIBS += -L "../../lib" -lopencv_world320

    • -L 设置库的路径;
    • -l 指定库的名字
  • 需要指定INCLUDEPATH以及DESTDIR。

QT += widgets
message($$PWD)
INCLUDEPATH += $$PWD/../../include
LIBS += -L ../../lib -lopencv_world320

SOURCES += main.cpp
CONFIG += console
DESTDIR += ../../bin
TARGET = testq # 输出文件名

库链接:
参考链接:https://blog.csdn.net/Marryvivien/article/details/41345281
(注:笔记自用,若侵权则立即删除)
假定目录结构为:
QT & Qmake 笔记_第1张图片
那么如果想要在main.cpp文件中使用这第三方库的话,就必须要做以下几件事情:
1. 指定头文件路径;
2. 指定库路径;
3. 指定库名字。

具体地,在.pro文件中添加以下语句:

  1. INCLUDEPATH += 3rdparty/CatWhisperer/include
  2. LIBS += -L"3rdparty/CatWhisperer/lib" -lCatWhisperer
    • -L 指定lib路径,-l指定使用的lib名称。注意,不必要指定.lib扩展名。

此外,如果想要指定目标文件夹,那么可以在.pro文件中添加:

DESTDIR = bin
TARGET = testq # 输出文件名

QT创建动态库和使用

  • TEMPLATE = lib
  • 静态库 CONFIG += staticlib

CONFIG()函数。可以用来控制编译不同的版本,debug版本和release版本。如果是debug版本则TARGET = libdll_d, 否则则是libdll. 类似于一个if 判断。

CONFIG(debug,debug|release){
    TARGET = libdll_d
}else{
    TARGET = libdll
}

想要独立构建一个桌面级别的应用,构建动态库和对其进行使用是必备技能。

在QT creator中,新建一个库后,会得到三个文件,文件结构如下图所示:
QT & Qmake 笔记_第2张图片
其中,vision3d是我自己起的项目名称,而vision3d_global.h头文件中所包含的则是动态库对外接口的宏定义
QT & Qmake 笔记_第3张图片
此外,vision3d.h则是对外的接口文件,动态库中需要被调用到的接口,都在这个文件中。

小例子

写动态库

通常来说,我们使用的算法都是以库的形式交给开发或其他的人,那么,正常算法工作的编码实际上就是在vision3d.h 以及vision3d.cpp中来实现的。
随便写一个测试函数,进行“构建”(build,或者快捷键 ctrl + B)后,可以在以下路径内,看到.so文件的生成:
QT & Qmake 笔记_第4张图片
QT & Qmake 笔记_第5张图片

当然,在windows下,编译的就是dll文件了。

用动态库

随便新建一个控制台项目或者界面项目。
要使用动态库,我们要做的最关键的事情就是,修改pro文件,添加include目录和so文件目录
QT & Qmake 笔记_第6张图片
参考资料:
https://blog.csdn.net/qq_27278957/article/details/95945638

当然,也可以直接在qpro文件中右键“添加库”,然后添加“外部库”,指定include目录以及库目录即可。

然而,居然存在找不到库的情况,即使将库复制到.o文件同路径也无法找到,在这种情况下,亲测将库的路径加入到LD_LIBRARY_PATH中会可行
QT & Qmake 笔记_第7张图片参考链接为:https://blog.csdn.net/weixin_45261340/article/details/124967459?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-124967459-blog-86527301.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-124967459-blog-86527301.pc_relevant_default&utm_relevant_index=2

此外,使用 QMAKE_LFLAGS += -Wl,-rpath= 也应当是奏效的。

参考资料

  1. B站视频教程:https://www.bilibili.com/video/BV1ZR4y1w7iy/?spm_id_from=333.788.recommend_more_video.0
  2. csdn-在一个窗口中显示三维模型: https://blog.csdn.net/GeomasterYi/article/details/107132140
  3. QT 打包发布程序
  4. youtube QT&openGL 教程
  5. qmake: https://blog.csdn.net/chenyingboo/article/details/122354902

附录

  1. QT提升为?

你可能感兴趣的:(#,C++,qt,开发语言)