我有一个用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的方式放在那里?
答案 0 :(得分:0)
您可以在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