我有一个用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的方式放在那里?
您可以在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