Цитата(QCasper @ 7.12.2009, 14:57)
Это, как я понял, работает следующим образом. Если изменился сам файл либы (не исходники) до при команде make для приложения, последнее будет пересобрано. Это решает половину задачи. Вторая половина подразумевает, что команда make для приложения инициирует также и сборку всех либ, от которых оно зависит.
У меня проект тоже состоит из нескольких либ и приложения. И собирается ровно так, как хочется: собираются сначала все либы, потом приложение. Если только одна либа изменилась, то пересобирается только она и приложение.
Структура проекта такая (названия подпроектов изменены):
source
\lib1
\lib2
\mainapp
В каталоге source лежит главный проектный файл source.pro. Содержимое примерно такое:
TEMPLATE = subdirs
CONFIG += ordered
SUBDIRS = lib1 \
lib2 \
mainapp_bin
mainapp_bin.subdir = mainapp
mainapp_bin.depends = lib1 lib2
ordered говорит qmake-у чтобы проекты собирались именно в таком порядке.
mainapp_bin.depends = lib1 lib2 - говорит что главное приложение зависит от либ
Проекты либ не очень интересны, поэтому их не привожу.
А проект главного приложения вот такой (несущественные части пропущены):
TARGET = mainapp
TEMPLATE = app
...
SOURCES += main.cpp
...
unix:MYLIBSDIR = ../../lib/unix-x86
LIBS += -L$$MYLIBSDIR
unix {
PRE_TARGETDEPS += $$MYLIBSDIR/libVisualization.a \
$$MYLIBSDIR/libTransforms.a
}
....
LIBS += -lVisualization \
-lTransforms
....
Если открыть проект в QtCreator, то откроются все подпроекты. Ну и из консоли все нормально собирается.