Название: Устройство дерева проекта Отправлено: __Heaven__ от Январь 29, 2015, 10:40 Привет друзья!
По сей день писал программы относительно небольшие и в одно лицо. Поэтому особо не заморачивался насчёт хранения файлов. Сейчас у меня все файлы хранятся в корне проекта, что напоминает своего рода бардак. Там и иконки, и код, и pro-файл, и шейдерные исходники, и текстовые шаблоны ну и всякие настройки пользователя и мусор от MSVC. Уже скоро мне нужно будет начинать проект, пока что тоже в одно лицо, но в будущем его разработкой, возможно, будут заниматься и другие участники. Данный проект будет достаточно большим. Меня это толкает задуматься, как вести проект, чтобы в будущем было меньше шишек и подзатыльников. Посему хочу спросить у опытных участников, как принято организовывать файловую структуру проекта, а также дерево внутри проекта(ресурсы, шаблоны и т.д.), файлы переводов (с ними не работал ниразу). Преимущественно пишу в QtCreator, но, для отладки трудновыявляемых багов запускаю MSVC. Название: Re: Устройство дерева проекта Отправлено: Пантер от Январь 29, 2015, 11:16 Глянь мою структуру https://github.com/panter-dsd/QDBFRedactor
Название: Re: Устройство дерева проекта Отправлено: __Heaven__ от Январь 29, 2015, 11:32 Спасибо. Смотрю...
Проект у меня не компилируется. Так понял, наверное нужна 4.x А почему ты не используешь дизайнер для создания форм? Название: Re: Устройство дерева проекта Отправлено: __Heaven__ от Январь 29, 2015, 11:39 В самом проекте отсутствуют core, dialogs, 3dparty.
Почему их там нет? Название: Re: Устройство дерева проекта Отправлено: Пантер от Январь 29, 2015, 12:08 Спасибо. Смотрю... Да, проект старый, на 4 Кьюте. Дизайнер тогда не юзал, но это особо ничего не меняет. ui храню рядом с h/cpp.Проект у меня не компилируется. Так понял, наверное нужна 4.x А почему ты не используешь дизайнер для создания форм? Название: Re: Устройство дерева проекта Отправлено: Пантер от Январь 29, 2015, 12:09 В самом проекте отсутствуют core, dialogs, 3dparty. Хм. Все есть. https://github.com/panter-dsd/QDBFRedactor/tree/master/srcПочему их там нет? Название: Re: Устройство дерева проекта Отправлено: __Heaven__ от Январь 29, 2015, 12:16 Я имел в виду, что этих папок не видно в .pro
Название: Re: Устройство дерева проекта Отправлено: Пантер от Январь 29, 2015, 12:23 Там сборка через CMake, pro некорректен.
Название: Re: Устройство дерева проекта Отправлено: __Heaven__ от Январь 29, 2015, 12:40 Я с CMake не знаком. Почему предпочтение было отдано ему?
Название: Re: Устройство дерева проекта Отправлено: __Heaven__ от Январь 29, 2015, 12:50 А еще меня всегда пугают папки core. Не представляю, как отделить интерфейс.
Допустим, у меня имеется SDI приложение. Я в centralWidget пишу все структуры, массивы, методы load, save, operate. Название: Re: Устройство дерева проекта Отправлено: kai666_73 от Январь 29, 2015, 13:12 А еще меня всегда пугают папки core. Не представляю, как отделить интерфейс. Думается мне что core не для разделения ГУИ и данных. Скорее всего в core описаны интерфейсы (абстрактные классы) для минимизации зависимостей между библиотеками... (не уверен что в приведенном примере именно так)Допустим, у меня имеется SDI приложение. Я в centralWidget пишу все структуры, массивы, методы load, save, operate. А по существу, на вашем месте я бы сначала занялся реструктуризацией/рефакторингом существующего (захамленного) проекта ) Название: Re: Устройство дерева проекта Отправлено: Пантер от Январь 29, 2015, 13:38 Я с CMake не знаком. Почему предпочтение было отдано ему? Он удобнее намного.Название: Re: Устройство дерева проекта Отправлено: Пантер от Январь 29, 2015, 13:39 А еще меня всегда пугают папки core. Не представляю, как отделить интерфейс. Вот лучше структуры и работу с ними выносить в ядро, а из виджетов дергать методы из ядра.Допустим, у меня имеется SDI приложение. Я в centralWidget пишу все структуры, массивы, методы load, save, operate. Название: Re: Устройство дерева проекта Отправлено: __Heaven__ от Январь 29, 2015, 14:09 на вашем месте я бы сначала занялся реструктуризацией/рефакторингом существующего (захамленного) проекта ) Да, кстати, будет хорошей практикой. Спасибо.А еще меня всегда пугают папки core. Не представляю, как отделить интерфейс. Вот лучше структуры и работу с ними выносить в ядро, а из виджетов дергать методы из ядра.Допустим, у меня имеется SDI приложение. Я в centralWidget пишу все структуры, массивы, методы load, save, operate. Спасибо. Думаю, что это пока что не всё - вопросы ещё появятся. Название: Re: Устройство дерева проекта Отправлено: __Heaven__ от Февраль 03, 2015, 15:07 С переводами я тоже впервые столкнулся.
Файлы ts и qm обычно хранятся в одной папке? Название: Re: Устройство дерева проекта Отправлено: Пантер от Февраль 03, 2015, 15:24 qm можно формировать на этапе инсталла и кидать сразу куда нужно. Держать их смысла не имеет.
Название: Re: Устройство дерева проекта Отправлено: __Heaven__ от Февраль 03, 2015, 16:08 Угу, понятно. Спасибо.
Название: Re: Устройство дерева проекта Отправлено: __Heaven__ от Февраль 03, 2015, 16:29 А во время компиляции (дебага) я могу кидать переводы в папку сборки?
QMAKE_POST_LINK += postbuild.bat не работает Название: Re: Устройство дерева проекта Отправлено: kambala от Февраль 03, 2015, 19:43 попробуй call postbuild.bat
Название: Re: Устройство дерева проекта Отправлено: __Heaven__ от Февраль 03, 2015, 19:47 попробуй call postbuild.bat Не, игнорируется.Это всё можно сделать в настройках сборки, но хочется делиться проектом, чтобы вручную не заводить дополнительные параметры. Название: Re: Устройство дерева проекта Отправлено: kambala от Февраль 03, 2015, 20:27 тогда сунь содержимое батника в QMAKE_POST_LINK, по одной команде. у меня вот такое работает:
Код: QMAKE_POST_LINK = sed -e \'s/@APP_VERSION@/$$VERSION/\' -e \'s/@COPYRIGHT@/$$COPYRIGHT/\' -i \'\' $$INFO_PLIST_PATH; Название: Re: Устройство дерева проекта Отправлено: __Heaven__ от Февраль 03, 2015, 20:46 Не, не работает. Кстати, Qt 5.4.
Хочу ещё вопрос спросить. Как поступить. Вот есть у меня геометрия. С ней нужно оперировать функциями. В моём проекте всё это хранится в mainwindow. Правильнее, наверное, сделать класс GeometryStorage, который будет хранить геометрию, класс GeometryReader - friend предыдущему для открытия файлов, класс GeometrySaver, GeometryOptimizer, GeometryWorker. Какое будет мнение? Название: Re: Устройство дерева проекта Отправлено: Bepec от Февраль 04, 2015, 01:50 Тут имеется золотая середина, которая у каждого своя.
Приведу пример. Цель: создать объект класса. Типов класса может быть 3. Моё решение: 3 класса, внучата одного общего с общим же интерфейсом. Возвращаются из ф-ции myObject * createObject(); Если ошибка, возвращаем NULL. Решение другого программиста: фабрика классов, которой должен быть передан умный указатель, правда перед этим фабрика должна быть инициализирована списком допустимых классов, ошибку можно получить лишь после передачи умного указателя в фабрику ошибок. Оба решения верны, оба имеют и плюсы и минусы, но мне импонирует моё решение :D PS Каждый выбирает для себя :) Название: Re: Устройство дерева проекта Отправлено: __Heaven__ от Февраль 09, 2015, 09:33 Попалась такая проблема:
Дерево проекта упрощённо выглядит так: *.pro src +dialogs +MyDialog.ui +widgets +MyWidget.h Теперь я хочу преобразовать с помощью дизайнера виджет, находящийся на MyDialog.ui, в мой виджет. Что мне необходимо указывать в качестве заголовочного файла? В ubuntu подошло "../../src/widgets/mywidget.h" по той причине, что сборка происходит в папку ./build. В винде же у меня используется для сборки папка ../build. Название: Re: Устройство дерева проекта Отправлено: __Heaven__ от Февраль 09, 2015, 09:44 %{CurrentProject:Path} как-то можно передать?
Название: Re: Устройство дерева проекта Отправлено: __Heaven__ от Февраль 09, 2015, 15:08 Решил вопрос с помощью
Код: INCLUDEPATH += ./src/widgets Название: Re: Устройство дерева проекта Отправлено: Пантер от Февраль 09, 2015, 15:11 Решил вопрос с помощью Вполне правильное решение.Код: INCLUDEPATH += ./src/widgets Название: Re: Устройство дерева проекта Отправлено: __Heaven__ от Февраль 09, 2015, 16:50 Спасибо.
|