一、前言
在项目开发过程中,经常需要使用第三方库QtCreator项目中指定的第三库路径、头文件路径、参考库名称等。;也可能需要为不同的编译类型、位数和不同的操作系统环境编操作系统环境选择不同的数据库;然后可以区分这些条件QtCreator的pro编写工程文件的逻辑实现。
二、添加第三方库和头文件
在下面的例子中,工程目录下放置了第三方库和头文件,直接使用代码中的路径$$PWD
取当前路径,然后接收目录。 程序测试的环境是win10(64bit)、Qt5.12.6
说明: 添加路径时左斜杠
、右斜杠
都可以支持。/ \
2.1 引用libvlc库示例
编译完成后,需要使用的动态库.dll复制到可执行文件exe只有在同级目录下才能正常运行。
INCLUDEPATH = $$PWD\VLC\sdk\include #VLC包含目录的头文件 INCLUDEPATH = $$PWD\VLC\sdk\include\vlc\plugins #VLC包含目录的头文件 INCLUDEPATH = $$PWD\VLC\sdk\include\vlc #VLC包含目录的头文件 LIBS =$$PWD\VLC\sdk\lib\libvlc.lib #引用的VLC库文件 LIBS =$$PWD\VLC\sdk\lib\libvlccore.lib
小知识: MSVC编译器使用libvlc需要在库编译中进行#include <vlc/vlc.h>
之前,定义typedef __int64 ssize_t;
否则,一堆未定义的错误可能会错误。 可以直接把typedef __int64 ssize_t;
写在#include <vlc/vlc.h>
上面一句。
#include <vlc/vlc.h>
qDebug()<<"libvlc版本:"<<libvlc_get_version(); //打印结果: libvlc版本: 3.0.12 Vetinari
2.2 引用ffmpeg库示例
INCLUDEPATH =$$PWD/ffmpeg/include LIBS = -L$$PWD/ffmpeg/lib/ -lavcodec -lavdevice -lavfilter -lavformat -lavutil -lpostproc -lswresample -lswscale DEPENDPATH = $$PWD/ffmpeg/lib
INCLUDEPATH =$$PWD/ffmpeg/include LIBS =$$PWD/ffmpeg/bin/av* LIBS =$$PWD/ffmpeg/bin/sw* LIBS =$$PWD/ffmpeg/bin/pos*
////声明引用C的头文件 extern "C" {
message('运行linu版本')
#添加opencv头文件的路径,需要根据自己的头文件路径进行修改
INCLUDEPATH+=/home/wbyq/work_pc/opencv-3.4.9/_install/install/include\
/home/wbyq/work_pc/opencv-3.4.9/_install/install/include/opencv\
/home/wbyq/work_pc/opencv-3.4.9/_install/install/include/opencv2
LIBS+=/home/wbyq/work_pc/opencv-3.4.9/_install/install/lib/libopencv_*
}
win32
{
message('运行win32版本')
#添加opencv头文件的路径,需要根据自己的头文件路径进行修改
INCLUDEPATH+=C:/OpenCV_3.4.7/OpenCV-MinGW-Build-OpenCV-3.4.7/include \
C:/OpenCV_3.4.7/OpenCV-MinGW-Build-OpenCV-3.4.7/include/opencv \
C:/OpenCV_3.4.7/OpenCV-MinGW-Build-OpenCV-3.4.7/include/opencv2
LIBS+=C:/OpenCV_3.4.7/OpenCV-MinGW-Build-OpenCV-3.4.7/x86/mingw/bin/libopencv_*.dll
}
适用于mingw编译器的OpenCV库去这里下载: https://github.com/huihut/OpenCV-MinGW-Build
opencv官网地址: https://opencv.org opencv 2.x 才有X86的库,从3.X开始就只有X64的库了,3.X的版本编译只需要加一个库非常方便;下面的代码示例就是使用的opencv3.4.x的库,MSVC编译器选择的是VS2017 64bit。
INCLUDEPATH += $$PWD/opencv/build/include\
INCLUDEPATH += $$PWD/opencv/build/include/opencv\
INCLUDEPATH += $$PWD/opencv/build/include/opencv2
LIBS += -L$$PWD/opencv/build/x64/vc14/lib\
-lopencv_world320d