我创建了一个Qt subdirs项目,其中有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;
}
链接两个项目以便app1可以使用lib1的规范方法是什么?
我看过create and use shared library with qt,它提到了INCLUDEPATH
,LIBS
和$$PWD
。这是我应该使用的,并且是最合适的方法吗?另外,我应该在自己的subdirs.pro文件中添加app1.depends = lib1
吗?
答案 0 :(得分:2)
您可以通过将每个子项目链接到子项目来使用它们。您应该将目标库路径添加到pro文件中的LIBS
和INCLUDEPATH
变量中。为简单起见,可以通过右键单击子项目并选择“添加库”,然后选择“内部库”来完成此操作。当从子项目列表中选择一个库时,链接配置将自动添加到.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文件中对其进行定义。