Тут представлен возможно самый правильный (удобный) вариант выделения части функционала большого проекта в отдельный подпроект (применительно к qmake).
Выделим к примеру весь функционал оборудования. То есть отделяем классы, связанные с оборудованием типа кассовые аппараты, банковские терминалы и т.д. в самостоятельный проект.
Создаем на диске каталог equipment и в нем по каталогам раскидываем наши классы
Каталог abstract для абстрактного класса для всего оборудования.
Каталог abstract_kkt для абстрактного класса кассовых аппаратов.
atol классы оборудования ккт atol.
mercury классы оборудования ккт Меркурий и т.д.
Это будут просто исходники (классы). И еще pri файлы к ним, чтобы не добавлять все файлы по отдельности в новый проект, а сделать один include сразу всех нужных файлов (*.cpp, *.h).
Тут важно обратить внимание на то, что у всех каталогов один уровень каталогов в файловой системе.
Это удобно с точки зрения подключения заголовочных файлов. Они все имееют общий исходный каталог на уровне каталога equipment.То есть нет вложенности каталогов.
Поэтому достаточно будет сделать один INCLUDEPATH += ../ ( это на каталог equipment) и все заголовочные файлы сразу будут найдены.
Далее важный момент - конечно нам надо тестировать каждое наше оборудование отдельно еще до включения в общий проект.
Для этого создаем в том же каталоге equipment проекты типа app для каждого оборудования например test_mercury_kkt или test_kkt_atol.
Далее в Qt Creator (у нас 2.4.1) открываем эти проекты, инклудами добавляем нужные pri файлы из нужных каталогов.
Собираем отдельно каждый из test проектов оборудования и отлаживаем их.
Все инклуды pri файлов красиво разварачиваются в дереве проектов (см. Qt Creator слева панель).
Разумеется в общий проект тестовые проекты не добавляются.
Примечание: my_lib это просто личные библиотеки, которые нужны всегда во всех проектах.
Есть еще важный момент - все заголовочные файлы подключаются через #include с полным относительным путем от уровня каталога equipment. Например:
#include "abstract/abstract.h"
Это во первых дополнительно защищает от конфликтов дубликатов имен (h файлов).
И во вторых все эти файлы будут найдены средой сборки и подключены, если добавить в проект INCLUDEPATH на каталог equipment, что очень удобно не правда ли.