第三方库

使用第三方库与 Qt 的过程简单。假设你了解一个支持跨平台且能接收猫的叫声样本并将其转化为英文单词的库。这个库名为 CatWhisperer,并提供了其库的一部分文件。你的项目 MyQtApp 将这些文件存储在一个名为 3rdparty 的文件夹中。

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

要在 MyQtApp 中使用 CatWhisperer 库,qmake 需要知道 CatWhisperer 库的位置和名称。可选地,你也可以

  • 提供 CatWhisperer 源码的位置,这样你在将它们包含到自己的代码中时无需输入每个文件的完整路径。
  • 选择 MyQtApp 可执行文件将创建到的目标位置。

以上信息提供在 .pro 文件中,以便 qmake 能够解析它并生成 makefile。Makefile 包含了编译器和链接器生成输出(无论是可执行文件、其他库文件等)所需的所有信息。下文将解释 qmake 期望你使用的提供这些信息的语法。

源代码

为了能够编写

#include <CatWhisperer.h>

而不是

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

你可以通过使用 INCLUDEPATH 变量来为 CatWhisperer include 目录提供路径

INCLUDEPATH += 3rdparty/CatWhisperer/include

库文件

为了让 qmake 知道在哪里找到 CatWhisperer 库文件,使用 LIBS 变量

LIBS += -L"3rdparty/CatWhisperer/lib" -lCatWhisperer

表达式的第一部分让链接器知道它在哪个目录中查找库文件。双引号仅在路径包含空格时才是必要的,所以在本例中我们可以省略它们。

第二部分告诉链接器链接哪些库。对于 UNIX 平台和 Windows 平台,我们分别有两个不同的库文件:libCatWhisperer.soCatWhisperer.lib。不需要指定 .lib 扩展名,也不需要指定 lib 前缀(在 UNIX 平台上)。

目标目录

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

DESTDIR = bin

这就完成了!现在你可以在项目中使用 CatWhisperer 库。最终的 .pro 文件如下

TARGET = MyQtApp

TEMPLATE = app

INCLUDEPATH += 3rdparty/CatWhisperer/include

SOURCES += src/main.cpp

LIBS += -L"3rdparty/CatWhisperer/lib" -lCatWhisperer

另请参阅qmake 手册Qt Creator:向项目添加库.

© 2024 Qt公司有限公司。本文档中包含的贡献内容的所有权归相应所有者所有。提供的文档根据Free Software Foundation发布的条款,以GNU自由文档许可版本1.3进行许可。Qt及其相关标志是Qt公司在芬兰和/或其他国家的商标。所有其他商标均归其相应所有者所有。