【问题标题】:Qt subdirs project with lib and app that uses the lib带有 lib 的 Qt 子目录项目和使用该 lib 的应用程序
【发布时间】:2019-03-09 11:46:04
【问题描述】:

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

lib1:

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

app1 应该打印hello, lib1:

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

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

【问题讨论】:

    标签: c++ qt qmake subdirectory


    【解决方案1】:

    您可以通过将每个子项目链接到子项目来使用每个子项目中的库。您应该将目标库路径添加到 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 = lib1Lib1 将始终在app1 之前构建,因为它取决于库。所以建议在你的 subdirs pro 文件中定义它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多