一般问题可以表述为 - 如果静态库 lib1 依赖于另一个静态库 lib2,我是否需要将 lib2 指定为 lib1 的链接器依赖项,或者仅在库链接到某个应用程序时才需要指定链接依赖项(然后每个使用 lib2 的应用程序也应该链接到 lib1)?
具体来说,我有一堆静态库和应用程序,它们之间有一些依赖关系,比如:
makeall.pro:
TEMPLATE = subdirs
CONFIG += ordered
SUBDIRS = coreLib \
anotherLib \
....
someApp
anotherLib.depends = coreLib
someApp.depends = coreLib anotherLib
coreLib.pro
TEMPLATE = lib
CONFIG += staticlib
TARGET = coreLib
#... some .cpp and .h
另一个Lib.pro
TEMPLATE = lib
CONFIG += staticlib
INCLUDEPATH += PATH_TO_CORE_LIB_INCLUDES
DEPENDPATH += PATH_TO_CORE_LIB_INCLUDES
TARGET = anotherLib
#有问题的行
someApp.pro
TEMPLATE = app
DESTDIR = ..\bin
INCLUDEPATH += PATH_TO_CORE_LIB_INCLUDES PATH_TO_ANOTHER_LIB_INCLUDES
DEPENDPATH += PATH_TO_CORE_LIB_INCLUDES PATH_TO_ANOTHER_LIB_INCLUDES
#有问题的行
我应该对有问题的线路使用什么:
另一个Lib.pro
(nothing required)
someApp.pro
PRE_TARGETDEPS += ../bin/coreLib.lib ../bin/anotherLib.lib
或者:
二、另一个Lib.pro
PRE_TARGETDEPS += ../bin/coreLib.lib
一些应用程序
PRE_TARGETDEPS += ../bin/anotherLib.lib
或者
三、另一个Lib.pro
PRE_TARGETDEPS += ../bin/coreLib.lib
someApp.pro
PRE_TARGETDEPS += ../bin/coreLib.lib ../bin/anotherLib.lib