Ранее я уже писал, как собирать Qt 4.8 для OS X Sierra и Linux. Осталось уточнить некоторые моменты для Windows. Основное отличие от ранее описанных инструкций таится в том, что мы будем все собирать под Visual Studio 2010
в отличие от GCC
. Стоит отметить, что 2010 студия - последняя, которая поддерживается со стороны Qt 4.8.
Шаги
- Вам нужно где-то найти Visual Studio 2010 (я лично брал на торрентах). Причем, по моим ощущениям подойдет какая-нибудь бесплатная типа Express. Да-да, в мире винды все нужно где-то что-то искать на непонятных сайтах или торрентах полувзломанное с кейгенами и кряками.
- Установить ее в систему, причем используя минимальную конфигурацию, ставим только C++
- Стянуть Qt4.8.7 с оф сайта и установить (qt-opensource-windows-x86-vs2010-4.8.7).
- Стянуть и установить сразу прекомпилированный OpenSSL
- Проверяем: Qt должен быть установлен в
C:\Qt\4.8.7
, OpenSSL - C:\OpenSSL
- Теперь необходимо открыть Visual Studio Command Prompt из Visual Studio Tools. По сути это обычная виндовая консолька с правильно экспортнутым
PATH
на исхода и утлиты студии
- В консольке написать
cd C:\Qt\4.8.7
- Ну и осталось правильно сконфигурить, указав, что мы собираемся компилировать под студию, и сослаться на исхода OpenSSL:
configure -platform win32-msvc2010 -release -opensource -fast -nomake demos -nomake examples -no-libtiff -no-libmng -no-qt3support -qt-zlib -qt-libpng -qt-libtiff -qt-libjpeg -webkit -script -declarative -no-phonon -no-multimedia -no-vcproj -no-audio-backend -openssl-linked -I "C:\OpenSSL\include" -L "C:\OpenSSL\lib" -confirm-license
- Сконфигуренный проект отправить конопилироваться
nmake
Доне.
Впрочем, я уже писал, как собирать для Linux, для OS X есть свои особенности в правильной конфигурации, ну и того, что Qt4 больше не поддерживается. А зря, я не использую Qt5 из-за огромного количества тянущихся библиотек, которые нужны ровным счетом для такого же приложения на Qt4. А все это выливается в тяжеловесный бандл для приложения типа Hello World.
Почему собирать? Скачанный с оф сайта готовый прекомпилированный пакет не встал в систему, все кончается какой-то ошибкой и qmake нигде нет. А сборка позволяет более тонко настроить Qt для Вашего релизного приложения, выкинуть ненужные и неиспользуемые модули и т.д. Также пацаны советуют собирать Qt с флагом -static, чтобы вообще избавиться от зависимых библиотек. К сожалению, это возможно, если вы не используете Webkit.
Шаги:
- Стягиваем qt-everywhere-opensource-src-4.8.7 отсюда.
- Убеждаемся, что у нас установлен XCode
- Распаковываем в хоум
tar zxvf -C ~ qt-everywhere-opensource-src-4.8.7.tar.gz
- Переходим в распакованную папку. Дальше интересное: нужно поправить файл src/gui/painting/qpaintengine_mac.cpp. Видите ли, пацаны не захотели править что-то депрекейтнутое из CoreGraphics Framework. На оф багтрекере написано, мол обновляйтесь на пятерочку, будет все конопилироваться. Но не тут-то было. Нужно кое-чего поправить в этом файле:

заменить на

- Чтобы модуль QtNetwork умел ходить по https, нам нужно установить и сконопелировать OpenSSL, скачиваем с оф сайта стабильные сорцы и распаковываем в удобную папку, например, в хоум. После этого необходимо собрать либы. Только есть одна особенность - QSslSocket не скомпилируется с версией SSL 1.1+, у меня отлично собралось с openssl-1.0.2j
cd ~/Downloads
tar zxvf -C ~ openssl-1.0.2j.tar.gz
cd ~/openssl-1.0.2j
./Configure darwin64-x86_64-cc -shared
make -j
- Теперь правильно сконфигурим, phonon придется выкинуть, из-за него начинаются проблемы c джойказино. Ключ -static добавляйте при необходимости статической линковки.
export OPENSSL_LIBS='-L/usr/local/ssl/lib/ -lcrypto -lssl';
./configure --fast -release -nomake demos -nomake examples -no-libtiff -no-libmng -qt-libjpeg -qt-libpng -qt-zlib -no-qt3support -opensource -no-accessibility -no-stl -no-svg -declarative -script -no-phonon -v -openssl-linked -no-xmlpatterns -no-multimedia -I/usr/local/ssl/include/ -webkit -no-gtkstyle
- Ну и дальше как обычно
make -j
sudo make install
Все добро вместе с qmake будет установлено в /usr/local/Trolltech/Qt-4.8.7/bin
Обычно я собираю Qt4 из исходов, чтобы гарантировать работу с OpenSSL (т.е. Qt по умолчанию не слинкован с OpenSSL), а также поддержку Ubuntu 10.04+ путем сборки либ под gcc-4.4.3
Последняя версия Qt4 - 4.8.7, забрать ее можно отсюда
Установка зависимостей
sudo apt install libfontconfig1-dev libfreetype6-dev libx11-dev libxcursor-dev libxext-dev libxfixes-dev libxft-dev libxi-dev libxrandr-dev libxrender-dev libssl-dev libdbus-1-dev
Сборка и установка
Необходимо распаковать архив, например, в домашнюю папку, перейти туда и сконфигурировать. Лично я использую следующие параметры, в которых модуль QtNetwork будет уже слинкован с OpenSSL, который из-за BSD лицензии не может сразу поставляться вместе с либами Qt под LGPL. Поэтому из коробки у вас не заработает https, пока вы с ней не слинкуетесь.
./configure -fast -nomake demos -nomake examples -no-libtiff -no-libmng -qt-libjpeg -qt-libpng -qt-zlib -openssl-linked -no-qt3support -opensource -no-accessibility -no-stl -no-declarative-debug -no-opengl -no-svg -confirm-license
После этого запустить саму сборку (примерно на часик) и затем установить в систему
make -j
sudo make install
Кстати, можно собирать Qt и статически с ключом -static
, чтобы на выходе получался цельный бинарь, без динамически подгружаемых библиотек, однако если в вашем приложение используется Webkit, то сделать это не удастся, тк он не умеет собираться статически =(