Russian Qt Forum
Апрель 20, 2024, 09:14 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Голосование
Вопрос: Кто какую систему сборки использует для своих проектов?
CMake - 7 (17.5%)
qmake - 26 (65%)
qbs - 5 (12.5%)
autotools - 0 (0%)
MSVC - 2 (5%)
Всего голосов: 29

Страниц: 1 [2] 3 4   Вниз
  Печать  
Автор Тема: Кто какую систему сборки использует?  (Прочитано 31607 раз)
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #15 : Март 29, 2017, 13:58 »

Шо за "сборки/разборки" - хз.
rly?
Сборка (программирование)
Записан
kai666_73
Крякер
****
Offline Offline

Сообщений: 319


Просмотр профиля
« Ответ #16 : Март 29, 2017, 14:04 »

На ОSX соответственно Xcode. Шо за "сборки/разборки" - хз. Само слово гнусное: "собирать" - а не надо было разбрасывать.
ПлюсЫ, Qt, кроссплатформенность... не? мысль улавливаете?
Нужен универсальный способ собирать исходники на разных платформах.
Потому вопрос о предпочтении qmake|cmake|qbs..., а не MSVC|Xcode...
« Последнее редактирование: Март 29, 2017, 14:08 от kai666_73 » Записан
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #17 : Март 29, 2017, 14:10 »

Всё это делаю через интерфейс qtcreator (qmake). Контроль версий (git) не спотыкается. При удалении файла спрашивает удалить ли из контроля, при добавлении сразу же делает git add, после переименовывания, в окне создания коммита я вижу, что у файла поменялся путь.

Такими возможностями креатора не пользовался, мне в винде намного удобней это в TortoiseGit делать Улыбающийся. Сейчас попробовал в проекте Qbs в креаторе файлы переименовывать/удалять, с git корректно работает. Выдаётся предупреждение, что не может файл переименовать/удалить в проектном qbs-файле, но там они поштучно и не описаны Улыбающийся. Правда приходится руками жать "Build/Reparse Qbs", это похоже на косяк, могло бы и автоматом это делаться, раз файл изменился.
Записан

Пока сам не сделаешь...
qate
Супер
******
Offline Offline

Сообщений: 1175


Просмотр профиля
« Ответ #18 : Март 29, 2017, 14:46 »

Если у тебя в исходниках есть одноимённые файлы, например:

да, так не получится, но это мелочи
Записан
qate
Супер
******
Offline Offline

Сообщений: 1175


Просмотр профиля
« Ответ #19 : Март 29, 2017, 14:48 »

Скорость сборки больших проектов выше.

за счет чего ?
ведь сборка проекта это сборка каждого файла и в конце линковка - что тут qbs может ускорить ?
Записан
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #20 : Март 29, 2017, 15:24 »

за счет чего ?
ведь сборка проекта это сборка каждого файла и в конце линковка - что тут qbs может ускорить ?

qmake генерит кучу Makefil'ов по которым выполняется сборка. Qbs строит дерево сборки целиком и сам вызывает компиляторы/линкеры и прочее. Лучше отслеживает изменения в структуре проектов и пересобирает необходимый минимум. Немного здесь описано: Introducing qbs Fast incremental builds. У меня на большом проекте проверка изменений в qmake могла занимать и минуту, даже если изменений никаких и не было. И так при каждой сборке. На Qbs это же занимало 0 секунд. Ну ладно, 0.5 секунды Улыбающийся.
Записан

Пока сам не сделаешь...
qate
Супер
******
Offline Offline

Сообщений: 1175


Просмотр профиля
« Ответ #21 : Март 29, 2017, 15:49 »

qmake генерит кучу Makefil'ов по которым выполняется сборка. Qbs строит дерево сборки целиком и сам вызывает компиляторы/линкеры и прочее. Лучше отслеживает изменения в структуре проектов и пересобирает необходимый минимум. Немного здесь описано: Introducing qbs Fast incremental builds. У меня на большом проекте проверка изменений в qmake могла занимать и минуту, даже если изменений никаких и не было. И так при каждой сборке. На Qbs это же занимало 0 секунд. Ну ладно, 0.5 секунды Улыбающийся.

очень странно:
1. qmake генерит один Makefile и ничего не вызывает при сборке, это делает make
2. make пересобирает только измененные фалы, при это qmake вообще не участвует
3. pro файл меняется редко, потому как его qmake парсит меня не напрягает
4. при каждой сборке qmake не участвует, если pro файл не менялся

может мы о разном говорим ?

хотя если проект состоит из "200 libraries, 50 classes per library, 30 lib-internal includes per file and 10 lib-external includes per file" то его наверно я замечу разницу
но такие проекты я еще не создавал )

« Последнее редактирование: Март 29, 2017, 16:01 от qate » Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #22 : Март 29, 2017, 15:57 »

Цитировать
После перехода на Qbs забыл qmake как страшный сон.

Пока это имеет смысл только для десктопных приложений. Но для дебаженья андройда и embedded linux (ЕМНИП), QBS к сожалению не торт, приходится богомерзкий qmake юзать.  В замешательстве

А по всем другим вещам QBS впереди всех перечисленных по удобству, скорости, разруливанию зависимостей и прочее (тут уже все ViTech разъяснил)! Улыбающийся

У меня, к примеру, QBS занимается также и деплоем (вызывает windeployqt), созданием инсталляторов (также и deb пакетов), "подписыванием" бинарей приложений/библиотек, добавлением в них RC секций и прочих няшек-плюшек.. И все это в одном проекте!  Попробуйте-ка на qmake/CMake это замутить - получите вигвам, и будете долго плеваться!
« Последнее редактирование: Март 29, 2017, 16:06 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #23 : Март 29, 2017, 16:05 »

очень странно:
1. qmake генерит один Makefile и ничего не вызывает при сборке, это делает make
2. make пересобирает только измененные фалы, при это qmake вообще не участвует
3. pro файл меняется редко, потому как его qmake парсит меня не напрягает
4. при каждой сборке qmake не участвует, если pro файл не менялся

может мы о разном говорим ?

1. qmake генерит один Makefile  для каждого модуля (библиотеки, приложения). В проекте их могут быть десятки.
2. make пересобирает только измененные файлы, но для этого должен зайти в каждый модуль и проверить изменился ли он. Это и отмечают в Introducing qbs Fast incremental builds.
3. В проектах со сложной структурой и зависимостями между модулями на qmake надо знатно извратиться, чтобы эти зависимости разрешить. Поэтому парсинг qmake может изрядно напрягать.
4. На большом проекте я уже вникать не стал, кто там участвует: qmake, make или кто-то ещё Улыбающийся. Тормоза по сравнению с Qbs просто громадные.

Я говорю о проекте в котором, допустим, штук 20 библиотек и 10 приложений Улыбающийся.
Записан

Пока сам не сделаешь...
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #24 : Март 29, 2017, 16:46 »

Кроме qtcreator кто-нибудь ещё поддерживает qbs?
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #25 : Март 29, 2017, 17:24 »

Пока нет, но это не проблема. Улыбающийся
Записан

ArchLinux x86_64 / Win10 64 bit
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #26 : Март 29, 2017, 17:56 »

да, так не получится, но это мелочи
Ни чего себе мелочи! Нет возможности собрать проект - нет конечного продукта. Это не мелочи.

Как из этой ситуации выходить?
- Перепахивать чужие модули? Какая при этом версия модуля получится?
- Писать (копипастить) модуль заново и потом постоянно синхронизировать его с оригинальным?

Если ты не одноразовые игрухи под мобилки клепаешь, а пользуешся выверенными модулями, то это огромная проблема.
« Последнее редактирование: Март 29, 2017, 18:03 от lit-uriy » Записан

Юра.
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #27 : Март 29, 2017, 18:13 »

очень странно:
1. qmake генерит один Makefile и ничего не вызывает при сборке, это делает make
- qmake генерит один Makefile
- запускается Make, видит инструкцию в MakeFile - "сделай с помощью qmake Makefile.Debug" и "сделай с помощью qmake Makefile.Release"
- qmake генерит один Makefile.Debug
- qmake генерит один Makefile.Release

При стандартном потходе, когда make вызывается без параметров debug или release, дальше картина выглядит так:
Make заходит в Makefile.Debug и выполняет его инструкции (проверяя изменившиеся файлы), затем Make заходит Makefile.Release и делает тоже самое над теми же файлами (в том числе проверку на изменения).
Т.е. по меньшей мере в 2 раза удлиняя процесс сборки.
Поэтому я инклюдю в свой профайл собственный "стандартный! конфиг и использую явные команды make debug и make release

Если имеются субпроекты то триад make-файлов бутдет на каждый субпроект.

2. make пересобирает только измененные фалы, при это qmake вообще не участвует
если используешь QSS воткнутый внутрь ресурсов, то никогда не проверяется изменение QSS, единственный способ - прибить соответствующий объектник.
« Последнее редактирование: Март 29, 2017, 18:27 от lit-uriy » Записан

Юра.
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #28 : Март 29, 2017, 18:22 »

так что у qmake есть весьма серьёзные проблемы,
но QBS пока напоминает студенческие эксперементы, такие же как и в проекте Оберон (Никлауса Вирта и Юрга Гукнехта).
Т.е. завтра внесут изменения и твой проект станет не понятен QBS-у (много раз сталкивался на чужих проектах, посему приходится держать несколько креаторов (старые не удалять).
Плюс ещё и ты должен вместо прикладной задачи заниматься слежением за блогом разработчиков QBS-а, что бы знать, что поменяли и чего тебя ждёт.

CMake - слишком много телодвижений требуется, чтобы создать проект. Его поддержка в креаторе - ущербная. У меня креатор ещё не разу неасилил создать CMake проект, который бы завёлся сразу - напоминает совавтопром - Доработай напильником, потом поедеш.
Записан

Юра.
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #29 : Март 29, 2017, 18:44 »

CMake - слишком много телодвижений требуется, чтобы создать проект. Его поддержка в креаторе - ущербная. У меня креатор ещё не разу неасилил создать CMake проект, который бы завёлся сразу - напоминает совавтопром - Доработай напильником, потом поедеш.
Про какие телодвижения разговор? Я уже лет 8 использую CMake и проблем не знаю.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Страниц: 1 [2] 3 4   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.058 секунд. Запросов: 24.