2009-04-23 2 views
9

Есть файл SomeLib.pro, который содержит:Как определить зависимость файла библиотеки от qmake в Qt?

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

Тогда в зависимом SomeApp.pro:

.. 
debug:LIBS += -lSomeLib_debug 
.. 

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

+1

Я делает использование QtCreator , Таким образом, я надеялся на решение в файле .pro. –

ответ

15

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

TARGETDEPS + = libfoo.a

+0

Отлично! Только то, что мне нужно! –

+1

Вместо этого используйте PRE_TARGETDEPS. –

+0

Почему? Что случилось с TARGETDEPS? – paulm

0

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

Это немного похоже на повторное компиляцию всех визуальных базовых приложений, если обновлен vbrun300.dll?

1

qmake не предоставляет эту способность.

Вместо этого поместите ваше приложение и Лив в подкаталогах, а затем создать Makefile в родительском каталоге, который выглядит следующим образом:

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

FRC: 

Затем всегда выполняется make из этого каталога.

+1

Я использую qtcreator. Таким образом, я надеялся на решение в файле .pro. –

2

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

1

я использовал:

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

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

3

QT Creator выполнит эту работу, если вы нажмете «Добавить библиотеку ...» в контекстном меню проекта, который должен включать библиотеку.

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

  • LIBS
  • INCLUDEPATH
  • DEPENDPATH
  • PRE_TARGETDEPS

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

Смежные вопросы