Russian Qt Forum

Qt => Qt-инструментарий => Тема начата: Larry от Ноябрь 21, 2017, 19:09



Название: [РЕШЕНО]Долгая сборка Release в Qt Creato
Отправлено: Larry от Ноябрь 21, 2017, 19:09
Добрый день, форумчане.
Возник вопрос, почему может долго компилится проект Release в Qt Creator. В Debug компилится 35 секунд, а в Release минут 15-20...уже как пару дней такое. Настроек никаких не вносил и ничего не менял.
Использую Qt 5.9.2, Qt Creator 4.4.1, компилятор Visusl Studio 2015 (Windows 10 x64).
Уже удалял и Qt и настройки Qt Creator, ставил версию 5.9.0 (5.9.1). Осталось снести и установить Visual Studio (неохота, т.к. дофига времени устанавливается и удаляется).
Какие есть варианты?
Спасибо.


Название: Re: Долгая сборка Release в Qt Creator
Отправлено: Larry от Ноябрь 21, 2017, 19:19
Только что после очередной сборки посмотрел в консоль сборки и получается что висело именно на линковке...


Название: Re: Долгая сборка Release в Qt Creator
Отправлено: Larry от Ноябрь 22, 2017, 00:11
После трехчасового марафона по удалению и установке Visual Studio 2015 ничего не изменилось...все также виснит на линковке на 20 минут...


Название: Re: Долгая сборка Release в Qt Creator
Отправлено: kambala от Ноябрь 22, 2017, 00:46
- построить вне креатора и посмотреть будет ли та же проблема
- посмотреть на особенности релиз конфигурации в .pro файле
- проверить релиз сборку на чистом проекте


Название: Re: Долгая сборка Release в Qt Creator
Отправлено: Larry от Ноябрь 22, 2017, 09:20
- построить вне креатора и посмотреть будет ли та же проблема
- посмотреть на особенности релиз конфигурации в .pro файле
- проверить релиз сборку на чистом проекте

Спасибо (как-то сам сразу не сообразил  :) ).
Проверил другие проекты (Qt Creator) и там все в порядке все быстро компилится и линкуется. Проверил текущий проект со схожим (оба используют QSerialPort), .pro файл идентичный, но в первом случае все быстро, а во втором 20 минут...уже думал может траблы где-то в проекте, но ведь в Debug все собирается быстро...
Qt Creator переустановлен с нуля и Visual Studio тоже.
Какие еще есть варианты?

Вот .pro файл проекта, который собирается быстро:

Код:
#-------------------------------------------------
#
# Project created by QtCreator 2017-06-15T11:47:37
#
#-------------------------------------------------

QT       += core gui serialport

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = FS9emulator
TEMPLATE = app

# The following define makes your compiler emit warnings if you use
# any feature of Qt which as been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0


SOURCES += main.cpp\
        mainwindow.cpp \
    qcmd.cpp \
    ciodevice.cpp \
    qkeyboard.cpp \
    qkey.cpp \
    qcommand.cpp

HEADERS  += mainwindow.h \
    qcmd.h \
    ciodevice.h \
    qkeyboard.h \
    qkey.h \
    qcommand.h

FORMS    += mainwindow.ui \
    keyboard.ui \
    command.ui

win32::RC_FILE = \
                 resource/icon.rc

RESOURCES += \
    resource.qrc

а вот тот, который тормозит:

Код:
#-------------------------------------------------
#
# Project created by QtCreator 2017-11-05T15:31:39
#
#-------------------------------------------------

QT += core gui serialport

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = configurator
TEMPLATE = app

# The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0


SOURCES += \
        main.cpp \
        configuratorwindow.cpp \
        qpanel.cpp \
        qcell.cpp \
        cmodbus.cpp \
        cdataunittype.cpp \
    cterminal.cpp

HEADERS += \
        configuratorwindow.h \
        qpanel.h \
        qcell.h \
        cmodbus.h \
        cdataunittype.h \
    cterminal.h

FORMS += \
        configuratorwindow.ui \
        qcell.ui \
    cterminal.ui

win32::RC_FILE = \
                 resource/icon.rc

RESOURCES += \
             resource.qrc


Название: Re: Долгая сборка Release в Qt Creator
Отправлено: ssoft от Ноябрь 23, 2017, 11:39
Долгая сборка в релизе может быть и из-за вложенности шаблонов.

Особенное если используются структуры вида

Код
QHash< KeyType_1, QHash< KeyType_2, QHash< KeyType_3, ValueType > > > ...
 

При этом не важно что за шаблоны std, Qt, boost или др.


Название: Re: Долгая сборка Release в Qt Creator
Отправлено: Larry от Ноябрь 23, 2017, 12:40
Да вложенности такой и не используется, только QVector<quint16>, QVector<QLineEdit*>...кроме того Debug быстро собирается, а там и размер поболее.


Название: Re: Долгая сборка Release в Qt Creator
Отправлено: Larry от Ноябрь 24, 2017, 14:06
Установил компилер mingw, теперь сборка Release 4 минуты, а Debug 1 минута 30 секунд...Это уже не 20 минут (+ gnu поматерился на некоторые участки кода - неявное приведение типов и порядок инициализации).


Название: Re: [РЕШЕНО]Долгая сборка Release в Qt Creato
Отправлено: kambala от Ноябрь 30, 2017, 13:13
вероятно, где-то в коде есть большие участки, которые активны только при релиз сборке