【发布时间】:2014-03-16 10:55:24
【问题描述】:
我无法弄清楚 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 += ...
app.pro
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 += ...
有没有办法避免 app.pro 中的 lib1 标头出现 INCLUDEPATH ?我认为 DEPENDPATHin lib2.pro 会解决这个问题,但显然不是。
编辑:澄清问题:
问题来自包含:#include "lib1.h" 的 lib2.h。如果我没有在 app.pro 中包含 lib1 标头,那么我会收到一个编译错误,指出找不到 lib1.h。这是正常的吗?不确定这是否有意义,但由于应用程序仅显式依赖于 lib2,它不应该只能通过包含 lib2 标头进行编译吗?
【问题讨论】:
标签: static dependencies qmake