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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: jom постоянно запускает qmake перед сборкой проекта  (Прочитано 4190 раз)
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« : Сентябрь 11, 2016, 22:57 »

После миграции на очередную версию QtCreator получаю странную на мой взгляд ситуацию со сборкой проекта, состоящего из нескольких других проектов (TEMPLATE = subdirs). Даже если код всех проектов вообще не менялся, QtCreator (4.1.0, Windows 10 x64, Qt 5.7.0) каждый раз запускает jom/nmake для генерации makefiles для каждого из вложенных проектов, что занимает при достаточно заметное время, особенно на фоне практически мгновенной пересборки изменившихся файлов в дочерних проектах (если таковые имеются). При этом, собственно, дальше всё идет штатно - пересобираются только те проекты, в которых были изменения. Кроме того, есть некие признаки того, что это его "осознанное" поведение Улыбающийся. Так, в начале сборки он даёт предупреждение:
"Каталог сборки должен быть на том же уровне, что и каталог исходников".
и в окне "Проекты" (см. рисунок) тоже странное предупреждение.
Папку сборки чистил, пересобирал - не помогает. Как это дело победить?
Записан
ViTech
Гипер активный житель
*****
Offline Offline

Сообщений: 858



Просмотр профиля
« Ответ #1 : Сентябрь 12, 2016, 10:27 »

Как это дело победить?

Использовать Qbs Улыбающийся.
Записан

Пока сам не сделаешь...
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #2 : Сентябрь 12, 2016, 12:05 »

Переход на Qbs - слишком радикально. Кроме того, такое ощущение, что развитие Qbs за последние годы несколько тормознулось. Да и там проблем проблем достаточно - ту же локализацию с lupdate так и не прикрутили.
И на самом деле, я, похоже, понял в чем именно проблема: у меня папка проекта исторически на диске D была, после приобретения быстрого SSD для системного диска решил перенести исходники и каталог сборки на него, для чего на D сделал символические ссылки для них. Теперь если открывать проект из реальной папки на диске C, то всё работает ожидаемо, а если из ссылочной на диске D - то так, как описано в первом моём сообщении. При этом предупреждение "Каталог сборки должен быть на том же уровне, что и каталог исходников" так и светится при каждой пересборке, но жить не мешает. Кто-нибудь знает, зачем оно такое пишет?
Записан
ssoft
Программист
*****
Offline Offline

Сообщений: 584


Просмотр профиля
« Ответ #3 : Сентябрь 12, 2016, 14:09 »

Сталкивался с таким же поведением, при переходе на более свежую версию QtCreator (давно уже). Нашел bugfix, который регламентировал специально такое поведение, но причины понять не смог.
Если не копаться в исходниках креатора, то лечится только убиранием warning: "Каталог сборки должен быть на том же уровне, что и каталог исходников".
Это значит, что сборка должна происходить в каталоге внутри проекта, где находится pro файл. Фактически это предупреждение возникает, когда qmake не может сформировать относительные пути и вынужден использовать полные. Лучше всего использовать каталоги сборки там, где предлагает сам креатор.
При использовании относительных путей в винде есть подводные камни, связанные с длиной относительного пути, но встречается редко в проектах с глубокой степенью вложенности. Надеюсь, что не ваш случай, иначе придется мириться с постоянным запуском qmake.
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #4 : Сентябрь 12, 2016, 20:17 »

лечится только убиранием warning: "Каталог сборки должен быть на том же уровне, что и каталог исходников".
Ну у меня вроде вылечилось и без убирания.
Лучше всего использовать каталоги сборки там, где предлагает сам креатор.
Этак мне он своими сборками весь диск загадит Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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