我有一个用 QMake 构建的 Qt 项目(称为“scanner”),其中有 2 个子项目:一个称为“scannerlib”的静态库和一个使用该库的应用程序,称为“app”(目前是只是一个 main.cpp 文件)
我的“扫描仪”文件夹包含文件 scanner.pro :
QT += core testlib
QT -= gui
CONFIG += c++14
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = subdirs
SUBDIRS = app scannerlib
app.depends = scannerlib
还有两个子文件夹,包含一个.pro文件和相关的源文件。 扫描仪库/扫描仪库.pro :
TARGET = scannerlib
TEMPLATE = lib
CONFIG += staticlib
#I ommited SOURCES and HEADERS here for brevity
应用程序/应用程序.pro :
TARGET = app
TEMPLATE = app
SOURCES = main.cpp
INCLUDEPATH += ../scannerlib
LIBS += -L../scannerlib -lscannerlib
我成功构建了 libscanner,但我无法在“app”中链接它。
error : cannot find -lscannerlib
经查看,libscannerlib.a已经构建成功,应该没有问题。 如果我删除 -lscannerlib,我会得到一个 undefined reference 。这似乎是合法的。
如果我将创建的“libscannerlib.a”从构建文件夹移动到 scanner/scannerlib,这允许 qmake 找到它,我可以获得成功的构建。
因此,问题看起来像是来自“-L../scannerlib”。我应该把什么放在那里,以便 qmake 在构建文件夹中找到 lib?
最佳答案
您可以在scannerlib
和app
项目中使用DESTDIR
。
扫描仪库/扫描仪库.pro :
TARGET = scannerlib
TEMPLATE = lib
CONFIG += staticlib
DESTDIR = ../bin
应用程序/应用程序.pro :
TARGET = app
TEMPLATE = app
SOURCES = main.cpp
DESTDIR = ../bin
INCLUDEPATH += ../scannerlib
LIBS *= -L$$OUT_PWD/$$DESTDIR -lscannerlib
关于c++ - 如何将子目录库与 QMake 链接起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42681858/