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