简述

在 Qt 中经常会用到第三方库,例如:FFmpeg、OpenCV 等。第三方库的使用比较简单,只需要一些基本的配置就可以搞定,一起来看看吧!

第三方库

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

  • MyQtApp/

    • MyQtApp.pro
    • src/ 
      • main.cpp
    • 3rdparty/ 
      • MyLibrary

        • include/

          • MyLibrary.h
        • lib/ 
          • libMyLibrary.so
          • MyLibrary.lib
        • bin/ 
          • MyLibrary.dll

要在 MyQtApp 中使用 MyLibrary 库,qmake 需要 MyLibrary 库的位置和名称。你也可以选择:

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

上面的信息在 .pro 文件中提供,以便 qmake 可以解析它并生成 makefiles。Makefiles 包含编译器和链接器生成输出所需的所有信息,无论它是可执行文件,另一个库文件等。

源代码

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

INCLUDEPATH += 3rdparty/MyLibrary/include

然后,就可以这样使用:

#include <MyLibrary.h>

而不是:

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

库文件

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

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

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

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

目标目录

默认情况下,qmake 在与 .pro 文件相同的目录中创建可执行文件,可以使用 DESTDIR 变量来选择自己的目录:

DESTDIR = bin

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

TARGET = MyQtApp

TEMPLATE = app

INCLUDEPATH += 3rdparty/MyLibrary/include

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

SOURCES += src/main.cpp

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

LIBS+=....最好还是使用$$PWD方式,如下:
LIBS += -L$$PWD/MyLibrary/lib/ -lMyLibrary
这样会被展开成为绝对路径方式,肯定能指定好正确的路径。
博主可能用的是QT for MSVC版本的,for MinGW版本按照介绍的方法找不到。

http://blog.csdn.net/liang19890820/article/details/52933198

Qt使用第三方库3rdparty的更多相关文章

  1. 基于Qt的第三方库和控件

    ====================== 基于Qt的第三方库和控件 ======================     libQxt --------   http://dev.libqxt.o ...

  2. Qt使用第三方库

    简述 在 Qt 中经常会用到第三方库,例如:FFmpeg.OpenCV 等.第三方库的使用比较简单,只需要一些基本的配置就可以搞定,一起来看看吧! 简述 第三方库 源代码 库文件 目标目录 第三方库 ...

  3. 基于QT开发的第三方库

    基于Qt开发的第三方库 分类: Qt2014-02-12 11:34 1738人阅读 评论(0) 收藏 举报 QT第三方库   目录(?)[+]   文章来源:http://blog.csdn.net ...

  4. Qt编程可不可以结合其他的第三方库和本土API?(有zeroMQ的Qt封装,还可轻易使用Python的库)

    作者:渡世白玉链接:http://www.zhihu.com/question/29030777/answer/59378712来源:知乎著作权归作者所有,转载请联系作者获得授权. 可以,十分可以,你 ...

  5. Qt第三方库----QCustomPlot

    一.软件下载 下载地址:http://www.qcustomplot.com/index.php/download 这里推荐下载第一个链接的内容: 注:这里的第三方库要放在非中文目录下. 二.配置 ( ...

  6. Qt笔记——连接第三方库&用libZPlay库获取音频文件的艺术家、专辑等信息

    连接第三方库libZPlay 概述 需要.a/.lib ,.h , .dll 三个文件 官网下载 http://libzplay.sourceforge.net/ import .h 链接 .a 放入 ...

  7. qt .pro文件和cmakelists.txt配置第三方库

    .pro文件引用第三方库文件和头文件路径 1.库文件(LIBS添加的是共享库文件,-L添加目录,-l指定共享库名称) LIBS += -L/usr/local/lib -lmath LIBS的使用就是 ...

  8. Qt-导入第三方库

    Qt提供了显式和隐式导入第三方库方法,本文只介绍显示导入方法. 第三方提供的库文件包括ControlCAN.h,ControlCAN.dll和ControlCAN.lib.将ControlCAN.h和 ...

  9. Python标准库与第三方库详解(转载)

    转载地址: http://www.codeweblog.com/python%e6%a0%87%e5%87%86%e5%ba%93%e4%b8%8e%e7%ac%ac%e4%b8%89%e6%96%b ...

随机推荐

  1. 【codeforces 782B】The Meeting Place Cannot Be Changed

    [题目链接]:http://codeforces.com/contest/782/problem/B [题意] 每个人都有一个速度,只能往上走或往下走; 然后让你找一个地方,所有人都能够在t时间内到达 ...

  2. 单点登录原理与简单实现--good

    一.单系统登录机制 1.http无状态协议 web应用采用browser/server架构,http作为通信协议.http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关 ...

  3. 【21.67%】【codeforces 727B】Bill Total Value

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  4. Arcgis api for javascript学习笔记(3.2X版本)-初步尝试

    Arcgis api for javascript(3.22版本)官方地址 :https://developers.arcgis.com/javascript/3/ 1. 根据官方示例实现一个简单地图 ...

  5. Android GPS获取当前位置信息

    package com.example.gpstest; import org.apache.http.util.LangUtils; import android.content.Context; ...

  6. 自定义滚动条样式 -webkit-scrollbar

    demo .page-one-content-area-inner-select-wrap height 200px margin-bottom 30px overflow auto &::- ...

  7. mysql和mysqli使用笔记

    总体来说还算兼容得还行,很多函数直接加个i 即可,比如mysql_connect -> mysqli_connect. 有些细小的区别,mysqli 更严格,当变量有与字段重名时,改变变量名才可 ...

  8. 编码(encode)问题

    1. UTF-8 与 GBK UTF-8: 允许含 BOM,但通常不含 BOM 用以解决国际上字符的一种多字节编码, 英文:8 bits(1 byte) 中文:24 bits(3 bytes) UTF ...

  9. 《Silk》(皇家律师)—— 英美海洋法系

    Abortion Act:堕胎法: 1. 表达习惯 we employ him, not the other way round, Officially,-,官方的说法是,Unofficially,- ...

  10. ASP.NET Core Identity 验证特性 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core Identity 验证特性 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core Identity 验证特性 上一章节我们简单介绍了 ...