Qt学习及踩坑日记(上)

Qt学习及踩坑日记(CMakeList的使用)

因为项目用到Qt,是急用,所以没有系统学习,仅根据项目所需,记录一下自己学习以及踩坑流程,给0基础小白一点启发。
本人是Qt小白,所以有描述错误或者不准确的内容,请大佬们指点出来并见谅。

1、项目的大概背景

在嵌入式开发板Jetson Xavier上进行编译的,直接在开发板上编译的,没有用到交叉编译。系统是Ubuntu。软件版本Qt5.9。
一个基于TensorRT的检测设备,利用到了外部库有深度学习推理加速库TensorRT,cudnn库,opencv库,海康威视工业相机的二次开发库等。本文主要介绍是基于项目所用到的Qt知识以及踩过的坑,不会详细介绍项目。

2、软件整体的构建

由于考虑到到cmake用途广泛,因此本人用CMakeList进行软件整体的构建,并没有采用qmake,关于CMakeList的学习以及踩坑记录:
主要介绍一下几个库的调用和生成,本人喜欢将主程序以为的函数封装到库里,方便调用。

2.1、调用opencv库

这个比较简单,如果编译不了的话,网上也有许多教程。这里就不重复前人的工作了

find_package(OpenCV 4 REQUIRED)

2.2、调用海康威视相机的的二次开发库

这里就是一个简单的外部库的调用,将所用到的头文件,以及库调用即可,这里有个踩坑点,当时以为调用库文件是用link_libraries,后来试了好几次,项目一直不能成功调用相机的二次开发库,后来百度了一下才知道,link directories(添加需要链接的库文件目录),而link_libraries(添加需要链接的库文件路径,注意这里是全路径),因为项目所用的库文件不止一个,而是目录下面所有,所以应该用link_directories

include_directories("/opt/MVS/include")
#not link_libraries ,is link directories
link_directories("/opt/MVS/lib/aarch64")

2.3、生成自己的库文件

这里用一个所写的目标跟踪的库为例,目标跟踪用来sort算法,原版是python,我写成了c++,这里将它封装为库,方便主程序调用。
file是加载目录下的.cpp文件作为源文件,然后用set设置一下编译选项和将opencv库文件作为sort所使用的库文件,接下来用include_directories调用所需的头文件,包括自己写的头文件以及所调用库的头文件,最后用add_library生成共享库并用target_link_libraries链接所需的库文件,方便后续调用。

file(GLOB sort_SRC "sort/*.cpp")
set(sort_LIBS ${OpenCV_LIBS})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/sort ${OPENCV_INCLUDE_DIRS})
add_library(sort SHARED ${sort_SRC})
target_link_libraries(sort ${sort_LIBS})

2.4、主程序的构建

这里有个踩坑点,就是有时候ui界面不更新,所以就加上了include_directories("../build/gui_autogen/include")这就话,如果你自己项目ui界面正常更新,可以不用这句话,这个具体原因不知道,就知道这个方法可以解决ui界面不更新的问题。
首先就是调用所用到Qt模块,后面的几个set我也根据前人的经验添加上去的,接下来利用add_executable生成可执行文件,最后就是链接前面所述的外部库文件,以及自己生成的库文件。

find_package(Qt5Widgets)
find_package(Qt5Core)
find_package(Qt5Gui)
#引入ui文件,ui_mainwindow.h
include_directories("../build/gui_autogen/include")
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_INCLIDE_CURRENT_DIR ON)
add_executable(gui
        main.cpp
        mainwindow.ui
        mainwindow.cpp
        ch_test.cpp
        ch_test.ui

)
qt5_use_modules(gui Widgets)
target_link_libraries(gui Qt5Widgets Qt5Core Qt5Gui)
target_link_libraries(gui myDNN sort)
target_link_libraries(gui -lMvCameraControl)

未完待续。。。。。。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值