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

StackOverflow https://stackoverflow.com/questions/781494

  •  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 обновлено?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top