如何将子目录库与QMake链接?

问题描述 投票:6回答:1

我有一个用QMake构建的Qt项目(称为“扫描仪”),我有2个子项目:一个名为“scannerlib”的静态库和一个使用该库的应用程序,称为“app”(目前,它只是一个主要的.cpp文件)

我的“scanner”文件夹包含文件scanner.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”中链接它。

错误:找不到-lscannerlib

检查后,libscannerlib.a已经成功构建,所以它应该不是问题。如果我删除-lscannerlib,我会得到一个未定义的引用。这似乎合法。

如果我将创建的“libscannerlib.a”从build文件夹移动到scanner / scannerl,这可以让qmake找到它,我可以获得成功的构建。

所以,问题看起来像是来自“-A ../ scanner lib”。我应该用cmake在build文件夹中找到lib的方式放在那里?

c++ qt qmake
1个回答
1
投票

您可以在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
© www.soinside.com 2019 - 2024. All rights reserved.