具有lib和使用该lib的app的Qt subdirs项目

时间:2019-03-09 11:46:04

标签: c++ qt qmake subdirs

我创建了一个Qt subdirs项目,其中有2个项目-lib1和app1,其中app1使用lib1中的类。

enter image description here

lib1:

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

app1应该显示hello, lib1

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

链接两个项目以便app1可以使用lib1的规范方法是什么? 我看过create and use shared library with qt,它提到了INCLUDEPATHLIBS$$PWD。这是我应该使用的,并且是最合适的方法吗?另外,我应该在自己的subdirs.pro文件中添加app1.depends = lib1吗?

1 个答案:

答案 0 :(得分:2)

您可以通过将每个子项目链接到子项目来使用它们。您应该将目标库路径添加到pro文件中的LIBSINCLUDEPATH变量中。为简单起见,可以通过右键单击子项目并选择“添加库”,然后选择“内部库”来完成此操作。当从子项目列表中选择一个库时,链接配置将自动添加到.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 = lib1,则Lib1将始终在app1之前构建,因为它取决于库。因此,建议在您的subdirs pro文件中对其进行定义。