你如何 link Qt 中的库?

How do you link libraries in Qt?

我有一个用 VS2017 编写的项目,它有很多静态库,我已经到了要开始完善 gui 的地步。为了确保我可以使用 Qt,我使用 https://www.toptal.com/qt/vital-guide-qmake, the https://wiki.qt.io/SUBDIRS_-_handling_dependencies example, the https://github.com/rainbyte/example-qmake-subdirs and https://github.com/219-design/qt-qml-project-template-with-ci/tree/6af6488d74e1dc97a8cef545080074055a696e9a 项目中的提示以及 SO 上的几个类似问题制作了一个测试子目录程序。

这包括一个名为“project”的子目录项目以及 2 个子项目“app”和“library”。这些都是使用新建子项目向导创建的简单 QtApplications,除了 main.cpp 之外的所有文件都从“app”中删除,除了“library”中的 main.cpp 之外的所有文件,关键是要确保“library”中的 mainwindow.h 引用自“app”中的 main.cpp。尽管尝试了我能找到的每个示例 我仍然收到“'mainwindow.h' 文件未找到”错误

根据我能找到的所有示例,您应该只需要在向导生成的 .pro 文件中添加几行 (#),并在“库”项目中添加一个额外的 .pri 文件;

目录结构;

project/
    project.pro 
    app/
        app.pro
        main.ccp
    library/
        library.pro
        mainwindow.h
        mainwindow.ccp
        mainwindow.ui
        library.pri

project.pro;

TEMPLATE = subdirs
TARGET = project ##

SUBDIRS += \
    app \
    library

app.depends = library ##

app.pro;

TEMPLATE = app ##
TARGET = app ##

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++11

SOURCES += \
    main.cpp

include(../library/library.pri) ##

library.pro;

TEMPLATE = lib ##
TARGET = library ##

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++11
CONFIG += shared ##
CONFIG += lib_bundle ##

SOURCES += \
    mainwindow.cpp

HEADERS += \
    mainwindow.h

FORMS += \
    mainwindow.ui

DISTFILES += \
    library.pri ##

和添加的 library.pri 文件;

LIBTARGET = library
BASEDIR   = $${PWD}
INCLUDEPATH *= $${BASEDIR}/include
LIBS += -L$${DESTDIR} -llibrary

我知道这个问题已经被问过很多次了,但我找不到确定的解决方案,或者更确切地说,似乎没有人愿意 post 他们的工作解决方案。我真的很感激任何帮助,我很想能够使用 Qt 并摆脱 win32 ui 创作的炼狱。

你有这个:

INCLUDEPATH *= $${BASEDIR}/include

但是您似乎在任何地方都没有名为 include 的目录。所以可能从上面删除 /include 部分。