Общий вопрос может быть сформулирован как: если статическая библиотека lib1 зависит от другой статической библиотеки lib2, мне нужно указать lib2 как зависимость компоновщика для lib1, или привязка зависимостей должна быть указана только тогда, когда библиотеки связаны с некоторым приложением (и то каждое приложение, использующее lib2, должно также связываться с lib1)?Указывает зависимость ссылки, требуемую, когда один статический lib зависит от другого статического lib?
В частности, у меня есть куча статических библиотек и в приложениях, с некоторыми зависимостями между ними, как это:
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
anotherLib .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
в вопросе Строки,
Что я должен использовать для линий в вопросе:
anotherLib.pro
(nothing required)
someApp.pro
PRE_TARGETDEPS += ../bin/coreLib.lib ../bin/anotherLib.lib
ИЛИ:
II. anotherLib.pro
PRE_TARGETDEPS += ../bin/coreLib.lib
someApp
PRE_TARGETDEPS += ../bin/anotherLib.lib
ИЛИ
III. anotherLib.pro
PRE_TARGETDEPS += ../bin/coreLib.lib
someApp.pro
PRE_TARGETDEPS += ../bin/coreLib.lib ../bin/anotherLib.lib
Отлично, спасибо! Если библиотеки находятся в неправильном порядке - это просто не будет ссылка, не так ли? –
Вы получите undefined символы, даже если символы определены в библиотеке. –
, включая имена вашей библиотеки или путь между --start-group и -end-group, заставит ваш компоновщик постоянно просматривать ваши библиотеки до тех пор, пока не будут разрешены все зависимости. – Barracuda