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

时间:2017-03-08 21:01:48

标签: c++ qt qmake

我有一个用QMake构建的Qt项目(称为" scanner"),我有2个子项目:一个名为&#34的静态库; scanlib"以及使用该库的应用程序,名为" 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文件和源文件相关。 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 / scannerlib,它允许qmake找到它。

因此,问题看起来像来自" -L ../ scannerlib"。我应该用qmake在build文件夹中找到lib的方式放在那里?

1 个答案:

答案 0 :(得分:0)

您可以在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