gpt4 book ai didi

static - 包含多个静态库的依赖 - qmake

转载 作者:行者123 更新时间:2023-12-05 07:59:09 28 4
gpt4 key购买 nike

我在弄清楚 qmake 如何处理依赖于另一个静态库的静态库的包含依赖项时遇到了一些问题。

我的文件夹结构如下:

--- src/
lib1/
src/ (.pro,*.h,*.cpp)
lib2/
src/ (.pro,*.h,*.cpp)
app/
src/ (.pro,*.h,*.cpp)
--- build/
lib1/
lib1.a
lib2/
lib2.a
app/
app

lib2使用lib1,app使用lib2。 .pro 文件是:

lib1.pro

TARGET = lib1
TEMPLATE = lib
CONFIG += staticlib
CONFIG += create_prl link_prl
SOURCES += ...
HEADERS += ...

lib2.pro

TARGET = lib2
TEMPLATE = lib
CONFIG += staticlib
CONFIG += create_prl link_prl

INCLUDEPATH += $${_PRO_FILE_PWD_}/../../lib1/src
DEPENDPATH += $${_PRO_FILE_PWD_}/../../lib1/src
PRE_TARGETDEPS += $${OUT_PWD}/../lib1/liblib1.a
LIBS += -L$${OUT_PWD}/../lib1 -llib1

SOURCES += ...
HEADERS += ...

应用程序专业版

TARGET = app
TEMPLATE = app
CONFIG += link_prl

# Include to lib1 headers ... How to avoid this ?
INCLUDEPATH += $${_PRO_FILE_PWD_}/../../lib1/src
DEPENDPATH += $${_PRO_FILE_PWD_}/../../lib1/src

# lib2
INCLUDEPATH += $${_PRO_FILE_PWD_}/../../lib2/src
DEPENDPATH +=$${_PRO_FILE_PWD_}/../../lib2/src
PRE_TARGETDEPS += $${OUT_PWD}/../lib2/liblib2.a
LIBS += -L$${OUT_PWD}/../lib2 -llib2

SOURCES += ...
HEADERS += ...

有没有办法避免 INCLUDEPATH 到 app.pro 中的 lib1 header ?我认为 lib2.pro 中的 DEPENDPATH 会解决这个问题,但显然不是。

编辑:澄清问题:问题来自 lib2.h,它包含:#include "lib1.h"。如果我不在 app.pro 中包含 lib1 header ,则会出现编译错误,指出未找到 lib1.h。这是正常的吗?不确定这是否有意义,但由于应用仅显式依赖于 lib2,难道它不能仅在包含 lib2 header 的情况下进行编译吗?

最佳答案

听起来您需要在顶层目录中使用适当的“.depends”语句创建一个 QMake SUBDIRS 项目。查看the first answer to "How to Use QMake's SUBDIRS TemplateQMake Project Dependencies .

关于static - 包含多个静态库的依赖 - qmake,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22435933/

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