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,它提到了 INCLUDEPATH
、LIBS
和 $$PWD
。这是我应该使用的吗?这是最合适的方法吗?另外,我应该将 app1.depends = lib1
添加到我的 subdirs.pro 文件吗?
您可以通过将其链接到子项目来使用每个子项目中的库。您应该将目标库路径添加到 pro 文件中的 LIBS
和 INCLUDEPATH
变量。为简单起见,这可以通过右键单击子项目并选择 "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 = lib1
,Lib1
将始终在 app1
之前构建,因为它取决于库。所以建议在你的subdirs pro文件中定义它。
我创建了一个 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,它提到了 INCLUDEPATH
、LIBS
和 $$PWD
。这是我应该使用的吗?这是最合适的方法吗?另外,我应该将 app1.depends = lib1
添加到我的 subdirs.pro 文件吗?
您可以通过将其链接到子项目来使用每个子项目中的库。您应该将目标库路径添加到 pro 文件中的 LIBS
和 INCLUDEPATH
变量。为简单起见,这可以通过右键单击子项目并选择 "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 = lib1
,Lib1
将始终在 app1
之前构建,因为它取决于库。所以建议在你的subdirs pro文件中定义它。