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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Почему сборка одного и тогоже проекта в 2 раза медленее в винде чем в линуксе  (Прочитано 14417 раз)
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #15 : Август 04, 2014, 16:36 »

Цитировать
Какие преимущества дает QBS?

Большие.

Если проект большой (содержит кучу статических библиотекк, динамических библиотек, плагинов, екзешек и прочего),
то в QBS очень удобно настраивать все зависимости между ними и пр. пр. пр.

Удобно включать/отключать некоторые части проекта (например некоторыми переменными в проекте и прочее.)
При этом отключенная часть проекта отображается в QtCreator сереньким цветом.

Удобно делать "левые" штуки . Например, в винде можно написать некоторый модуль, который будет подписывать (signing)
нужные екзешни, dll-ки и прочее после их сборки и запаковки в инсталлер, к примеру. (конечно, если подписывание необходимо.
обычно это делают "нормальные" конторы Улыбающийся ).

Удобно делать инсталляторы, например используя WiX и прочее.

В общем, все гибко и замечательно. Сначала немного непривычно - но потом втягиваешься и начинаешь от Qmake делать буэээ. Улыбающийся.
Записан

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

Сообщений: 2130



Просмотр профиля
« Ответ #16 : Август 04, 2014, 17:02 »

Спасибо. Интересно.
Пока буду держать в уме, ибо не распространяю проекты  Улыбающийся
Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #17 : Август 04, 2014, 19:29 »

Цитировать
Какие преимущества дает QBS?

Большие.

Если проект большой (содержит кучу статических библиотекк, динамических библиотек, плагинов, екзешек и прочего),
то в QBS очень удобно настраивать все зависимости между ними и пр. пр. пр.

Удобно включать/отключать некоторые части проекта (например некоторыми переменными в проекте и прочее.)
При этом отключенная часть проекта отображается в QtCreator сереньким цветом.

Удобно делать "левые" штуки . Например, в винде можно написать некоторый модуль, который будет подписывать (signing)
нужные екзешни, dll-ки и прочее после их сборки и запаковки в инсталлер, к примеру. (конечно, если подписывание необходимо.
обычно это делают "нормальные" конторы Улыбающийся ).

Удобно делать инсталляторы, например используя WiX и прочее.

В общем, все гибко и замечательно. Сначала немного непривычно - но потом втягиваешься и начинаешь от Qmake делать буэээ. Улыбающийся.


По сравнению с CMake как оно? Можно ли там делать сложные штуки, типа функций? Есть ли там аналог find-модулей в стандартной поставке?

По теме: По поводу тормознутости компиляции в винде, основная проблема на мой взгляд - это медленная файловая система и медленный запуск процесса. mingw-make порождает кучу подпроцессов в процессе исполнения, виндовое ядро явно не было оптимизировано для этого случая в отличие от unix.

Многопоточная компиляция помогает, но всё равно существенно не дотягивает до скорости компиляции под linux.
Записан

Гугль в помощь
Bepec
Гость
« Ответ #18 : Август 04, 2014, 19:34 »

По-моему тут простая вещь и не надо хаять винду.

mingw сделан под linux.
MSVC сделан под винду.
В родных системах их скорость максимальна.

А креатор тормозит при любом компиляторе Веселый
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #19 : Август 04, 2014, 20:17 »

Цитата: navrocky
По сравнению с CMake как оно?

Ну, попроще, ИМХО. Скажем так: более юзер-френдли, что-ли, более явно тут все (не то что в CMake - боже упаси). Я как-раз таки перевел свой проект из CMake на QBS.
Тоже метался в муках выбора, т.к. на CMake приходилось писать очень много кода. Да и QBS универсальне все-таки, ИМХО.

Перевел также некоторые Embedded под-проекты (основанные на Keil, IAR и пр.).
Чтобы одним махом компилить и собирать в пакеты сразу и Embedded часть и ОС-специфик и пр.  Показает язык

Цитата: navrocky
Можно ли там делать сложные штуки, типа функций?

Да.

Цитата: navrocky
Есть ли там аналог find-модулей в стандартной поставке?

Вроде как аналогом является Probe. Но, кажется, это еще допиливается. Я не использовал еще..
« Последнее редактирование: Август 04, 2014, 20:22 от kuzulis » Записан

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

Сообщений: 2812


Просмотр профиля
« Ответ #20 : Август 04, 2014, 20:25 »

Цитата: Bepec
А креатор тормозит при любом компиляторе Веселый

Зато не универсальна твоя студия. Да и что делать, если нет денег на нее? Как ты будешь собирать проект без студийного IDE? Улыбающийся
А вот, используя QBS + Windows SDK можно собрать все что угодно, не имея всяких студий. И бесплатно - и сердито (конечно, можно и BAT-ники писать - но это не наш путь). Улыбающийся

Записан

ArchLinux x86_64 / Win10 64 bit
Bepec
Гость
« Ответ #21 : Август 04, 2014, 21:18 »

Microsoft Visual C++ (MSVC) — интегрированная среда разработки приложений на языке C++, разработанная фирмой Microsoft и поставляемая либо как часть комплекта Microsoft Visual Studio, либо отдельно в виде бесплатного функционально ограниченного комплекта Visual C++ Express Edition.
Я ответил на ваш вопрос? Улыбающийся

PS имеется так же пара сайтов которые позволяют собрать любой проект на этом движке, но тут уже исходники отсылать надо Улыбающийся
Записан
kamre
Частый гость
***
Offline Offline

Сообщений: 233


Просмотр профиля
« Ответ #22 : Август 05, 2014, 06:25 »

Тоже метался в муках выбора, т.к. на CMake приходилось писать очень много кода. Да и QBS универсальне все-таки, ИМХО.
А QBS умеет генерировать solution для MSVC, чтобы можно было нормально отладчиком пользоваться (а не тем косячным вариантом, что в QtCreator предлагается)?
Записан
alex312
Хакер
*****
Offline Offline

Сообщений: 606



Просмотр профиля
« Ответ #23 : Август 05, 2014, 07:11 »

Нет, qbs пока не генерирует никаких проектов. Хотя планы есть.
Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #24 : Август 07, 2014, 21:35 »

По-моему тут простая вещь и не надо хаять винду.

mingw сделан под linux.
MSVC сделан под винду.
В родных системах их скорость максимальна.

А креатор тормозит при любом компиляторе Веселый

MSVC под виндой компилит медленнее чем gcc в linux, не помогает ей даже IncrediBuild. Это факт. Mingw, конечно, еще медленнее чем MSVC.
Записан

Гугль в помощь
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #25 : Август 18, 2014, 17:38 »

Я так и понял, что дело в ФС и ядре винды.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3258


Просмотр профиля
« Ответ #26 : Сентябрь 02, 2014, 14:13 »

Погробокопаю

Я так и понял, что дело в ФС и ядре винды.

Дело не столько в ФС (хотя и в этом тоже), сколько в том, что рекурсивные makefile'ы - зло. Спавнить миллион процессов просто ради того, чтобы сделать стат всех файлов в проекте (для того, чтобы понять, что пересобирать) - не самая здравая затея


По сравнению с CMake как оно? Можно ли там делать сложные штуки, типа функций? Есть ли там аналог find-модулей в стандартной поставке?

1) Ф-ии пишутся на JS, как следствие можно сделать очень много всего. Правда, не очень часто надо, только когда пишутся кастомные Рулы/Трансормеры (правила генерации чего-л во что-л, например сгенерить из шаблона app_version_header.in.h хедер app_version_header.h)
2) Аналога find модулей нету и не планируется. Вернее сказать, частичным аналогом являются сами Модули - например зависимость от модуля Qt.core делает примерно то же, что и find_package(Qt* REQUIRED). Однако, для сторонних либ таких модулей нет - предлагается самому прописывать зависимости. Что не очень сложно, на самом деле - в том же линуксе инклюды видятся автоматом, а линкфлаги прописывать не надо (в отличие от цмейка) - достаточно прописать имя библиотеки в пропертю cpp.dynamicLibraries. Вообще, у модулей немножко другое назначение - помимо, собственно, линковки к либам, они (и это и есть основная фича) регистрируют новые Рулы - то, как qbs обрабатывает файлы определенного типа - для .cpp надо вызвать clang, для .ui - uic
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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