Проект Qt subdirs с lib и приложением, которое использует lib - PullRequest
1 голос
/ 09 марта 2019

Я создал проект 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;
}

Как канонически можно связать 2 проекта, чтобы app1 могла использовать lib1?Я посмотрел на создать и использовать совместно используемую библиотеку с qt , где упоминаются INCLUDEPATH, LIBS и $$PWD.Это то, что я должен использовать, и это самый правильный способ сделать это?Кроме того, я должен добавить app1.depends = lib1 к моему файлу subdirs.pro?

1 Ответ

2 голосов
/ 09 марта 2019

Вы можете использовать библиотеки в каждом подпроекте, связав его с подпроектом.Вы должны добавить целевые пути lib к переменным LIBS и INCLUDEPATH в файле pro.Для простоты это можно сделать, щелкнув правой кнопкой мыши подпроект и выбрав «Добавить библиотеку», а затем «Внутренняя библиотека».Когда вы выбираете одну библиотеку из списка подпроектов, конфигурации ссылок добавляются в .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, поскольку это зависит от lib.Поэтому рекомендуется определить его в вашем файле subdirs pro.

...