我有一个用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?

最佳答案

您可以在DESTDIRscannerlib项目中都使用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/

10-10 22:32