Qt 使用第三方库

简述

在 Qt 中常常会用到第三方库,例如:FFmpeg、OpenCV 等。第三方库的使用比较简单,只须要一些基本的配置就能够搞定,一块儿来看看吧!ruby

第三方库

假设你须要依赖一个跨平台的库 - MyLibrary,而且有几个文件做为库的一部分。咱们的项目 MyQtApp 将这些文件存储在名为 3rdparty 的文件夹中:app

  • MyQtApp/ 
    • MyQtApp.pro
    • src/ 
      • main.cpp
    • 3rdparty/ 
      • MyLibrary/ 
        • include/ 
          • MyLibrary.h
        • lib/ 
          • libMyLibrary.so
          • MyLibrary.lib
        • bin/ 
          • MyLibrary.dll

要在 MyQtApp 中使用 MyLibrary 库,qmake 须要 MyLibrary 库的位置和名称。你也能够选择:ui

  • 提供 MyLibrary 源代码的位置,以便在将它们包含在本身的代码中时,没必要输入每一个文件的完整路径。
  • 选择 MyQtApp 可执行文件将被建立的目标目录。

上面的信息在 .pro 文件中提供,以便 qmake 能够解析它并生成 makefiles。Makefiles 包含编译器和连接器生成输出所需的全部信息,不管它是可执行文件,另外一个库文件等。spa

源代码

使用 INCLUDEPATH 变量提供 MyLibrary 的 include 目录路径:.net

INCLUDEPATH += $$PWD/3rdparty/MyLibrary/include
  • 1

而后,就能够这样使用:code

#include <MyLibrary.h>
  • 1

而不是:blog

#include <3rdparty/MyLibrary/include/MyLibrary.h>
  • 1

库文件

要让 qmake 知道在哪里能够找到 MyLibrary 库文件,使用 LIBS 变量:ip

LIBS += -L$$PWD/"3rdparty/MyLibrary/lib" -lMyLibrary
  • 1

表达式的第一部分(-L...):使连接器知道应该在哪一个目录中查找库文件。双引号只在路径包含空格时才须要,所以此处能够省略。get

表达式的第二部分(-l...):告诉连接器连接哪些库。对于 Windows 和 UNIX 平台,有两个不一样的库文件:MyLibrary.lib 和 libMyLibrary.so,没有必要指定 .lib 扩展名,也没必要指定 lib 前缀(在 UNIX 平台上)。编译器

目标目录

默认状况下,qmake 在与 .pro 文件相同的目录中建立可执行文件,可使用 DESTDIR 变量来选择本身的目录:

DESTDIR = bin
  • 1

就这么简单,如今能够在项目中使用 MyLibrary 库了。最终的 .pro 文件以下所示:

TARGET = MyQtApp

TEMPLATE = app

INCLUDEPATH += $$PWD/3rdparty/MyLibrary/include

LIBS += -L$$PWD/"3rdparty/MyLibrary/lib" -lMyLibrary

SOURCES += src/main.cpp
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

不管使用什么库,配置基本都大同小异,Good Luck!


转载自:一去丶二三里 博客地址:http://blog.csdn.net/liang19890820