Ускорение компиляции Qt проекта в IDE Qt Creator

2017/06/21

Если вы работаете над сколь мало серьезным проектом на С++, то вы сталкивались с мучительно долгой компиляцией, даже если не учитывать полную пересборку проекта. Может возникнуть момент, когда сам процесс разработки становится затруднительным из - за длительной компиляции. Например, внесли какието изменения в исходный код, добавили небольшой класс, запустили процесс компиляции, что бы протестировать изменения - можно идти пить чай, ибо ждать нужно минут пять. Устранить эту печаль призванна данная статья.

Оказывается, в 2017 - му году, если не предпринять специально меры, по умолчанию при компиляции используется один поток! Долой многоядерные процессоры ... . К счастью распараллелить компиляции С++ проектов в Qt Creator достаточно просто. Есть несколько путей это сделать, например редактированием pro файла с добавлением флагов, но самый простой и самый эффективный, судя по бенчмаркам, это использование утилиты JOM. И так, качаем архив утилиты https://wiki.qt.io/Jom , распаковываем и кидаем содержимое в папку Qt5.9mingw53_32/bin. Далее открываем Qt Creator, настраиваем сборку конкретного проекьа как показано ниже:

Qt Creator JOM parallel compilation

Собственно, на этапе make build and clean нужно указать путь к утилите JOM. Касательно величины ускорения, в текущем состоянии проекта UnoSDR, полная компиляция на дефолтных настройках занимала 11 мин 51 сек. С утилитой jom - 3 мин 40 сек. Процессор ноутбучный 4 ядра. Выводы делайте сами.

Для Linux можно указать в опции "Make arguments" строку -jX, где X - количество потоков, на которые распараллеливается компиляция.

Category: Qt Tagged: Qt


Сворачивание Qt Qml приложения в System Tray

2017/06/21

В новой версии Qt 5.9.0 появилась поддержка system tray. До этого приходилось использовать QSystemTrayIcon из состава виджетов. Теперь все намного проще. Ниже небольшой пример. При нажатии на кнопку закрытия приложения, приложение будет светнуто в system tray - в общем стандартное поведение. Так же, при запуске должно появится системное уведомление.

import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3
import Qt.labs.platform 1.0

ApplicationWindow {
    property string appTitle: "Example"

    id: window
    visible: true
    width: 640
    height: 480
    title: qsTr(appTitle)

    SystemTrayIcon {
        visible: true
        iconSource: "qrc:/favicon.ico"
        tooltip: appTitle

        menu: Menu {
            MenuItem {
                text: qsTr …

Category: Qt Tagged: Qt

Read More

Релиз Qt 5.9

2017/06/08

Работая над проектом стал замечать в выдаче Google документацию на Qt5.9. Оказалось, что 31 мая подоспела новая версия фреймворка Qt 5.9.0, всего после полугода от предыдущей Qt5.8.0, что достаточно быстро.

На следующий же день я установил новую версию. Изменений не так много, главным образом затронуты кэширование qml, производительноть qml, исправление багов.

Category: Qt Tagged: Qt

Read More

Qt Creator переключение между файлами класса исходника и хедера

2017/05/14

Что мне нравится в C++, так это разделение на файлы исходников и хедеров. Это очень помогает, когда нужно разобратся в незнакомом проекте. Файл хедера, как бы скелет класса. Если нужно посмотреть реализацию конкретного метода, просто переключаешься на файл исходников.

Если ваш проект в Qt Creator небольшой, то скорей всего у вас открыты ветки дерева исходников и хедеров. Но по мере разростания проекта, такая избыточность начинает мешать, тем более, что структура хедеров повторяет структуру исходников. В таком случае дерево хедеров лучше закрыть, а переключение между исходниками и хедерами осуществлять клавишей F4

Проверено, удобно! :)

Category: Qt Tagged: Qt

Read More

Фиксируем ориентацию экрана Qt QML Android приложения

2017/05/05

В процессе разработки приложения под андроид на Qt столкнулся с проблемой фиксации ориентации экрана приложения. Оказалось, что программно это сделать невозможно, так как qml свойство "Screen.orientation" доступно только для чтения. Но, есть обходной путь - редактирование манифеста.

В файле манифеста нужно найти строку - android:screenOrientation="unspecified", и поменять значение на нужное, например, android:screenOrientation="sensorLandscape"

Category: Qt Tagged: android Qt

Read More

Установка Qt5 на Raspberry Pi Jessie

2017/04/27

Каких то пол года - год назад установка Qt5 на Raspberry Pi доставляла боль - ведь в стандартном репозитарии доступна была только Qt4, и что бы использовать Qt 5, нужно было компилировать из исходников, а это занимало не много не мало времени - сутки, из - за достаточно слабого процессора малины.

Но на дворе на данный момент существует уже Qt 5.8.0. Так что Qt 4 окончательно устарел. И как вы догадались, теперь не нужно ждать завершения компиляции, достаточно в терминале набрать пару строк:

sudo apt-get install qt5-default
sudo apt-get install qtcreator

Приятной разработки!

Category: Qt Tagged: Qt

Read More

Публикация Qt приложения в Google Play

2017/03/08

Сегодня я опишу небольшой туториал - как скомпилировать валидный для google play apk файл. Когда я впервые столкнулся с этой задачей, оказалось, что в интернете годных туториалов то и нет. Кстати, если вы собираетесь серьезно занятся разработкой android приложений на Qt, готовьтесь, что выше описанная ситуация будет повторятся достаточно часто.

И так, начнем. Для того, что бы разместить свое приложение в google play, естественно нужно иметь там аккаунт, который не бесплатный, а стоил на момент моей регистрации порядка 20 - ти долларов. Если вы подумаете что это много, в apple нужно отдать порядка ста долларов. Описывать процесс регистрации не стану, так как …

Category: Qt Tagged: Qt

Read More
Page 1 of 2

Next »