Как указать зависимость файла библиотеки для qmake в Qt?
-
13-09-2019 - |
Вопрос
Иметь SomeLib.pro файл, который содержит:
CONFIG += debug
TEMPLATE = lib
TARGET = SomeLib
..
Затем в зависимом SomeApp.pro:
..
debug:LIBS += -lSomeLib_debug
..
Как я могу заставить SomeApp выполнить сборку, если я коснулся SomeLib в qmake?
Решение
Это некрасиво, потому что вам нужно указать точное имя файла библиотеки, но это должно сработать:
TARGETDEPS += libfoo.a
Другие советы
QT Creator выполнит эту работу, если вы нажмете "Добавить библиотеку ..." в контекстном меню проекта, который должен включать библиотеку.
Эти переменные настраиваются автоматически для вас:
- БИБЛИОТЕКИ
- INCLUDEPATH ВКЛЮЧИТЬ ПУТЬ
- ЗАВИСИМЫЙ ПУТЬ
- PRE_TARGETDEPS - ПРЕДВАРИТЕЛЬНАЯ ЦЕЛЬ
Смотрите также http://doc.qt.digia.com/qtcreator-2.1/creator-project-qmake-libraries.html
В ответ на комментарий Захира, возможно, стоит указать, что указание этой зависимости в файлах qmake не требуется при использовании DLL, но существенный если ваш exe-файл зависит от статической библиотеки.
qmake
не предоставляет такой возможности.
Вместо этого поместите свое приложение и библиотеку в подкаталоги, затем создайте 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 обновлено?