Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [Qt] структура и организация проекта


Автор: CompWorm 6.8.2012, 21:03
Привет!

Допустим, у меня есть несколько связанных проектов Qt в qtCreator (например, несколько статических либ и несколько гуёв или клиент и сервер) как лучше организовать работу?

в VS можно создать солюшан, в котором будут сидеть несколько проектов. как подобное реализовать в qt creator?
иногда собрав один проект, требуется сразу пересобрать какие-то зависимые. Как это сделать одним нажатием на билд?

Автор: math64 7.8.2012, 07:48
Создаётся subdir проект,
Код

TEMPLATE=subdirs
SUBDIRS+= mylibrary myserver myclient

В подкаталогах mylibrary myserver myclient размещаются вложенные проекты.
Ресурсы в разных проектах ложить под разными префиксами - в дизайнере Qt Creator будет предлагать ресурсы из всех проектов, с одинаковым префиксом их будет не различить, а из клиента можно пользоваться ресурсами только клиента и библиотеки, но не сервера.

Автор: CompWorm 15.8.2012, 22:59
math64, 
спасибо+, это получилось. 

хорошо, а кто может наглядно рассказать какая должна быть файловая структура проекта?
то есть допустим есть гуи, либы, сторонние либы, вспомогательные тулзы и ресурсы.

в конечном итоге юзеру выдаются исходники, которые должны собираться обычным сишным компилятором под его платформу. Когда всё собрано, программа должна без проблем заворачиваться в пакет с помощью checkinstall под линем и в инстоляшку под виндой (это конечно будет делаться скриптами, но тут важно чтоб структура проекта способствовала простоте).

основная идея, я так понимаю - иметь отдельную папку для исходников (туда исходники будем качать с svn) и отдельное место для сборки, конечных бинарей и либ.
я почитал, что с CMake проекты qt настраивать очень геморно для разных платформ...

какие есть предложения? как вы организуете свои проекты?

Автор: math64 16.8.2012, 08:30
QtCreator умеет работать с CMake. Но файл проекта придётся редактировать вручную.
Как в CMake подключить ресурсы, ui, moc - не знаю.
Использую qmake,  проекты объединяю с помощью subdirs. В каждом подпроекте указываю каталоги для исходников, промежуточных файлов, бинарника.
Пользуюсь Mercurial - но push и merge делаю из командной строки.

Автор: CompWorm 16.8.2012, 14:49
звучит напряжно.
ещё кто-нибудь пробовал красиво структурировать проект?

Добавлено через 2 минуты и 57 секунд
может статьи толковые кто видел?

Автор: CompWorm 20.8.2012, 21:31
Ладно, раз больше желающих высказаться нет, пишу свой вариант:

нашёл пару статей по сборки qt проекта из cmake
http://qt-project.org/quarterly/view/using_cmake_to_build_qt_projects, http://symmetrica.net/cmake/CMake-4.htm
у меня собралось с cmake v2.8.9 без проблем.

общую структуру проекта избрал следующую:

Цитата

project
|
| \__ Source
|      |
|       \__Executable1
|      |      |
|      |       \__src
|      |      |
|      |       \__inc
|      |      |
|      |       \__ ...
|      |
|       \__myLibrary1
|      |      |
|      |       \__src
|      |      |
|      |       \__inc
|      |      |
|      |       \__ ...
|      |
|       \__ ...
| 
\__ Build
      |
       \__bin
      |
       \__lib
      |
       \__...


Source не гадим, контролируем его через svn/git , у него же в корне лежит файл cmake по которому все собирается в папку Build.
такая структура удобна и тем, что достаточно тривиальным скриптом на линуксовом сервере сборки всё чудным образом собирается, закатывается в пакет с checkinstall и через wine создаётся виндус инстоляшка. 

пока всё просто, но по мере усложнения возможно появятся вопросы...  smile

Добавлено через 9 минут и 20 секунд
Цитата(math64 @  16.8.2012,  08:30 Найти цитируемый пост)
Но файл проекта придётся редактировать вручную.

да, вот это я пока не придумал как настроить. 

тут проблема в том, что корневой каталог для сборки указывается в *.pro.user файле, а в *.pro пути указываются уже относительно этого адреса... то есть каждый кто скачал проект, должен как - то вручную все пути вписывать в настройках, что не очевидно и черевато ошибками при коммитах, так как по умолчанию qtCreator всё собирает там же где и исходники....  smile 

Автор: math64 21.8.2012, 08:36
У меня структура такая:
Код

project/
 .hg/ -- Репозиторий Mercurial
  bin/ -- Сюда складываются собранные бинарники. Отладочные версии с D на конце
  lib/ -- Сюда складываются библиотеки
  plugins/ -- Нужные плагины
  qss/ -- Стили
  xml/ -- 
 doc/ -- Документация
 include/ -- Общие для всех проектов заголовки
 source/
  project1/
    -- исходники для project1
  project2/
    -- исходники для project2
 res/
  project1/
    -- ресурсы для project1
  project2/
    -- ресурсы для project2
 project1/
  project1.pro
 project2/
  project2.pro
 .hgignore // Список файлов не влючаемых в репозиторий
 project.pro // TEMPLATE=subdirs
 project.pro.user
project-buid-desktop
 -- создаётся QtCreator, сюда сваливаются промежуточные файлы

Насторойки для project1 создаются вручную, для project2 копипастятся.
При добавлении нового файла в проект нужно следить, чтобы QtCreator положил его в нужный каталог.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)