Qt subdirs 项目与 lib 和使用 lib 的应用程序

Qt subdirs project with lib and app that uses the lib

我创建了一个 Qt 子目录项目,其中包含 2 个项目 - lib1 和 app1,其中 app1 使用来自 lib1 的 class。

lib1:

Lib1::Lib1() {
    qDebug("hello, lib1");
}

app1 应该打印 hello, lib1:

#include "lib1.h"
int main(int /*argc*/, char */*argv*/[]) {
    Lib1();
    return 0;
}

link 这 2 个项目的规范方法是什么,以便 app1 可以使用 lib1? 我查看了 create and use shared library with qt,它提到了 INCLUDEPATHLIBS$$PWD。这是我应该使用的吗?这是最合适的方法吗?另外,我应该将 app1.depends = lib1 添加到我的 subdirs.pro 文件吗?

您可以通过将其链接到子项目来使用每个子项目中的库。您应该将目标库路径添加到 pro 文件中的 LIBSINCLUDEPATH 变量。为简单起见,这可以通过右键单击子项目并选择 "Add Library" 然后选择 "Internal Library" 来完成。当您从子项目列表中 select 一个库时,链接配置会自动添加到 .pro。就像:

win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../Lib1/release/ -lLib1
else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../Lib1/debug/ -lLib1
else:unix: LIBS += -L$$OUT_PWD/../Lib1/ -lLib1

INCLUDEPATH += $$PWD/../Lib1
DEPENDPATH += $$PWD/../Lib1

如果您定义 app1.depends = lib1Lib1 将始终在 app1 之前构建,因为它取决于库。所以建议在你的subdirs pro文件中定义它。