Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt] структура и организация проекта, как организовать файлы, настроить проект 
V
    Опции темы
CompWorm
Дата 6.8.2012, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Допеределыватель
***


Профиль
Группа: Участник Клуба
Сообщений: 1689
Регистрация: 6.12.2004
Где: /

Репутация: нет
Всего: 31



Привет!

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

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

Это сообщение отредактировал(а) CompWorm - 15.8.2012, 23:01


--------------------
PM MAIL   Вверх
math64
Дата 7.8.2012, 07:48 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 23
Всего: 72



Создаётся subdir проект,
Код

TEMPLATE=subdirs
SUBDIRS+= mylibrary myserver myclient

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

PM   Вверх
CompWorm
Дата 15.8.2012, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Допеределыватель
***


Профиль
Группа: Участник Клуба
Сообщений: 1689
Регистрация: 6.12.2004
Где: /

Репутация: нет
Всего: 31



math64
спасибо+, это получилось. 

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

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

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

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


--------------------
PM MAIL   Вверх
math64
Дата 16.8.2012, 08:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 23
Всего: 72



QtCreator умеет работать с CMake. Но файл проекта придётся редактировать вручную.
Как в CMake подключить ресурсы, ui, moc - не знаю.
Использую qmake,  проекты объединяю с помощью subdirs. В каждом подпроекте указываю каталоги для исходников, промежуточных файлов, бинарника.
Пользуюсь Mercurial - но push и merge делаю из командной строки.
PM   Вверх
CompWorm
Дата 16.8.2012, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Допеределыватель
***


Профиль
Группа: Участник Клуба
Сообщений: 1689
Регистрация: 6.12.2004
Где: /

Репутация: нет
Всего: 31



звучит напряжно.
ещё кто-нибудь пробовал красиво структурировать проект?

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


--------------------
PM MAIL   Вверх
CompWorm
Дата 20.8.2012, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Допеределыватель
***


Профиль
Группа: Участник Клуба
Сообщений: 1689
Регистрация: 6.12.2004
Где: /

Репутация: нет
Всего: 31



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

нашёл пару статей по сборки qt проекта из cmake
раздва
у меня собралось с 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 


--------------------
PM MAIL   Вверх
math64
Дата 21.8.2012, 08:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 23
Всего: 72



У меня структура такая:
Код

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 положил его в нужный каталог.

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0944 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.