gpt4 book ai didi

c++ - 如何将子目录库与 QMake 链接起来?

转载 作者:可可西里 更新时间:2023-11-01 17:59:12 26 4
gpt4 key购买 nike

我有一个用 QMake 构建的 Qt 项目(称为“scanner”),其中有 2 个子项目:一个称为“scannerlib”的静态库和一个使用该库的应用程序,称为“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文件和相关的源文件。扫描仪库/扫描仪库.pro :

TARGET = scannerlib
TEMPLATE = lib
CONFIG += staticlib

#I ommited SOURCES and HEADERS here for brevity

应用程序/应用程序.pro :

TARGET = app
TEMPLATE = app
SOURCES = main.cpp
INCLUDEPATH += ../scannerlib
LIBS += -L../scannerlib -lscannerlib

我成功构建了 libscanner,但我无法在“app”中链接它。

error : cannot find -lscannerlib

经查看,libscannerlib.a已经构建成功,应该没有问题。如果我删除 -lscannerlib,我会得到一个 undefined reference 。这似乎是合法的。

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

因此,问题看起来像是来自“-L../scannerlib”。我应该把什么放在那里,以便 qmake 在构建文件夹中找到 lib?

最佳答案

您可以在scannerlibapp 项目中使用DESTDIR

扫描仪库/扫描仪库.pro :

TARGET = scannerlib
TEMPLATE = lib
CONFIG += staticlib
DESTDIR = ../bin

应用程序/应用程序.pro :

TARGET = app
TEMPLATE = app
SOURCES = main.cpp
DESTDIR = ../bin
INCLUDEPATH += ../scannerlib
LIBS *= -L$$OUT_PWD/$$DESTDIR -lscannerlib

关于c++ - 如何将子目录库与 QMake 链接起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42681858/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com