Как указать зависимость файла библиотеки для qmake в Qt?

есть SomeLib.pro файл, который содержит:

CONFIG  += debug
TEMPLATE = lib
TARGET = SomeLib
..

затем в зависимом SomeApp.pro:

..
debug:LIBS += -lSomeLib_debug
..

Как я могу заставить SomeApp строить, если я коснулся SomeLib в qmake?

6 ответов


это уродливо, потому что вам нужно дать точное имя файла библиотеки, но это должно работать:

TARGETDEPS += libfoo.а


Qt Creator выполнит работу, если вы нажмете "добавить библиотеку"..."в контекстном меню проекта, который должен включать библиотеку.

эти переменные настраиваются автоматически для вас:

  • LIBS
  • INCLUDEPATH
  • DEPENDPATH
  • PRE_TARGETDEPS

см. также http://doc.qt.digia.com/qtcreator-2.1/creator-project-qmake-libraries.html


в ответ на комментарий Захира, возможно, стоит отметить, что указание этой зависимости в файлах qmake не нужно при использовании DLL, но это essential Если ваш exe зависит от статической библиотеки.


qmake не предоставляет такую возможность.

вместо этого поместите приложение и lib в подкаталоги, а затем создайте Makefile в своем родительском каталоге, который выглядит примерно так:

all: FRC
    cd Somelib && qmake && $(MAKE) 
    cd SomeApp && qmake && $(MAKE)

FRC:

затем всегда работать make из этого каталога.


Я:

POST_TARGETDEPS += c:/open-en/lib/win32mingw/libosal_based.a

он работает, но неуклюж, так как необходимо указать полный путь к библиотеке, который отличается для каждой операционной системы/компилятора.


конечно, это невозможно, вы говорите об использовании qmake для поиска обратной зависимости? Итак, что вы хотите, чтобы он построил приложение B (и любое другое приложение, зависящее от библиотеки A) после того, как вы внесли изменения в библиотеку A?

Это немного похоже на перекомпиляцию всех приложений visual basic, если vbrun300.DLL-файл обновляется?