Была необходимость собрать программу Trojita? с помощью QMake в QT-Creator. В оригинале сборка идет с помощью CMake.
По структуре pro-файлов trojita (0.2 с чем-то версии) из примеров Qt, сделал pro-файлы для текущей версии (0.7). В исходные коды не лез.
Оба варианта проекта открыл Qt-Creator и там же собрал в режиме релиз. Оба собрались, оба запускаются. В обоих случаях компилируются одинаковый набор статических и динамических библиотек, и исполняемый файл (qmake-ом не собирается только второй исполняемый файл, но его нужность у меня под сомнением). И все бы ничего, но бинарных файлов cmake и qmake сборок в разы отличается в пользу первого. Разница в размерах идет уже на этапе создания объектных файлов.
Попытался из makefile-а удалить все строки на mkspec-и qt. Собралось с теми же размерами.
Или я что-то лишнее задаю в pro-файле? Или qmake сам что-то лишнее в makefile пишет?
Во вложении Cmake-файл проекта, diff-файл версии c qmake-проектом, Makefile-ы вариантов проекта cmake и qmake для libImap.
Сильно разный размер бинарников при сборке CMake и QMake одной и той же программы
Модератор: Модераторы разделов
Сильно разный размер бинарников при сборке CMake и QMake одной и той же программы
- Вложения
-
- Trojita_Imap.tar.bz2
- (74.75 КБ) 28 скачиваний
Понимание - это меч с тремя кромками: ваша правда, наша правда и Истина.
Жизнь - игра: сюжет задуман фигова, но графика хорошая...
Лучший игровой сервер - Земля: карта всего одна, но на 7 миллиардов игроков; читеров нет, админ терпеливый, но если уж забанит...
Жизнь - игра: сюжет задуман фигова, но графика хорошая...
Лучший игровой сервер - Земля: карта всего одна, но на 7 миллиардов игроков; читеров нет, админ терпеливый, но если уж забанит...
- Bizdelnick
- Модератор
- Сообщения: 20793
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Сильно разный размер бинарников при сборке CMake и QMake одной и той же программы
Видимо cmake у Вас собирает с дебагом, а qmake — без. Чтобы увидеть наверняка, нужны вербозные логи сборки.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Сильно разный размер бинарников при сборке CMake и QMake одной и той же программы
Bizdelnick писал(а): ↑18.01.2017 12:46Видимо cmake у Вас собирает с дебагом, а qmake — без. Чтобы увидеть наверняка, нужны вербозные логи сборки.
Во вложении логи сборки всего проекта.
make_cmake - лог с makefile-а созданного cmake
make_qmake - лог с makefile-а созданного qmake
cmake - лог выводы cmake
Сборка в обоих случаях проводилась из консоли вызовом соответсвующих утилит.
- Вложения
-
- Trojita_Imap.tar.bz2
- (22.91 КБ) 31 скачивание
Понимание - это меч с тремя кромками: ваша правда, наша правда и Истина.
Жизнь - игра: сюжет задуман фигова, но графика хорошая...
Лучший игровой сервер - Земля: карта всего одна, но на 7 миллиардов игроков; читеров нет, админ терпеливый, но если уж забанит...
Жизнь - игра: сюжет задуман фигова, но графика хорошая...
Лучший игровой сервер - Земля: карта всего одна, но на 7 миллиардов игроков; читеров нет, админ терпеливый, но если уж забанит...
- Bizdelnick
- Модератор
- Сообщения: 20793
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Сильно разный размер бинарников при сборке CMake и QMake одной и той же программы
Вероятно, я неправильно понял — в каком случае бинарники получаются больше? В случае qmake фигурирует опция -gdwarf-4, а в случае cmake дебажных опций нет, так что по идее cmake должен делать бинарники меньшего размера.
Можно ещё напрямую посмотреть, какие секции присутствуют в бинарнике, с помощью objdump -h.
Можно ещё напрямую посмотреть, какие секции присутствуют в бинарнике, с помощью objdump -h.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Спасибо сказали:
Re: Сильно разный размер бинарников при сборке CMake и QMake одной и той же программы
Так qmake и делает большего размера.
Спасибо за подсказку. Нашел в /usr/lib64/qt5/mkspecs/common/gcc-base.conf
убрал -gdwarf-4, размер сборки сразу стал нормальным.
Спасибо за подсказку. Нашел в /usr/lib64/qt5/mkspecs/common/gcc-base.conf
Код: Выделить всё
QMAKE_CFLAGS_OPTIMIZE = -O2 -Wa,--compress-debug-sections -gdwarf-4 -fvar-tracking-assignments -frecord-gcc-switches -Wstrict-aliasing=2 -pipe -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -ffat-lto-objects -fno-delete-null-pointer-checks -fstack-protector --param=ssp-buffer-size=4 -fPIC
QMAKE_CFLAGS_OPTIMIZE_FULL = -O2 -Wa,--compress-debug-sections -gdwarf-4 -fvar-tracking-assignments -frecord-gcc-switches -Wstrict-aliasing=2 -pipe -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -ffat-lto-objects -fno-delete-null-pointer-checks -fstack-protector --param=ssp-buffer-size=4 -fPIC
убрал -gdwarf-4, размер сборки сразу стал нормальным.
Понимание - это меч с тремя кромками: ваша правда, наша правда и Истина.
Жизнь - игра: сюжет задуман фигова, но графика хорошая...
Лучший игровой сервер - Земля: карта всего одна, но на 7 миллиардов игроков; читеров нет, админ терпеливый, но если уж забанит...
Жизнь - игра: сюжет задуман фигова, но графика хорошая...
Лучший игровой сервер - Земля: карта всего одна, но на 7 миллиардов игроков; читеров нет, админ терпеливый, но если уж забанит...