Jak określić zależność pliku biblioteki dla qmake w Qt?

Mieć SomeLib.pro plik zawierający:

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

Wtedy w zależnej SomeApp.pro:

..
debug:LIBS += -lSomeLib_debug
..

Jak mogę wymusić zbudowanie czegoś, jeśli dotknąłem czegoś w qmake?

Author: Derick Schoonbee, 2009-04-23

6 answers

Jest brzydki, ponieważ musisz podać dokładną nazwę pliku biblioteki, ale to powinno działać:

TARGETDEPS + = libfoo.a

 16
Author: Ariya Hidayat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-23 22:07:36

Qt Creator wykona pracę, jeśli klikniesz " Dodaj bibliotekę..."w menu kontekstowym projektu, które powinno zawierać bibliotekę.

Te zmienne są skonfigurowane automatycznie dla Ciebie:

  • LIBS
  • INCLUDEPATH
  • DEPENDPATH
  • PRE_TARGETDEPS

Zobacz też http://doc.qt.digia.com/qtcreator-2.1/creator-project-qmake-libraries.html

 3
Author: pi3,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-20 08:38:05

W odpowiedzi na komentarz Zahira, być może warto zwrócić uwagę, że podanie tej zależności w plikach qmake jest niepotrzebne, jeśli używasz bibliotek DLL, ale jest Niezbędne , Jeśli twój exe zależy od statycznej biblioteki.

 2
Author: Clare Macrae,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-10 13:53:37

qmake nie zapewnia tej zdolności.

Zamiast tego umieść swoją aplikację i lib w podkatalogach, a następnie utwórz plik Makefile w ich katalogu nadrzędnym, który wygląda mniej więcej tak:

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

FRC:

Następnie zawsze uruchom make z tego katalogu.

 1
Author: Mark Beckwith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-23 12:58:20

Użyłem:

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

To działa, ale jest niezgrabne, ponieważ konieczne jest podanie pełnej ścieżki do biblioteki, która jest inna dla każdego systemu operacyjnego/kompilatora.

 1
Author: sth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-15 23:13:10

Z pewnością nie jest to możliwe, mówisz o użyciu qmake do odwrotnego wyszukiwania zależności? więc co chcesz, aby zbudować aplikację B (i każdą inną aplikację zależną od biblioteki a) po dokonaniu zmiany w bibliotece a?

To trochę jak przekompilowanie wszystkich aplikacji visual basic jeśli vbrun300.dll jest aktualizowany?

 0
Author: Zahir J,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-23 12:47:26