воскресенье, 2 декабря 2012 г.

Статическая сборка библиотеки QT под MS Visual studio

Я думаю никто не рвётся выпускать своё приложение с кипой библиотек... Чтобы приложение запускалось свободно на других машинах необходимо собрать библиотеку, а затем и само приложение. Ниже я опишу как это сделать.
Первым делом качаем исходники библиотеки (я брал 4.8.0, так как они у меня уже есть в системы). Исходники на сайте звучат как Source files.
Качаем их куда-либо и распаковываем. Рекомендую избегать пробелов и русских символов в пути до исходников, дабы не создать себе лишних проблем.
Следующим этапом открываем "путь к исходникам"/mkspecs/win32-msvc2008/qmake.conf и заменяем все строчки -MD и -MDd на -MT и -MTd. В моём случае строки

QMAKE_CFLAGS_RELEASE    = -O2 -MD
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MD -Zi
QMAKE_CFLAGS_DEBUG      = -Zi -MDd

Заменим на 

QMAKE_CFLAGS_RELEASE    = -O2 -MT
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MT -Zi
QMAKE_CFLAGS_DEBUG      = -Zi -MTd

Половина дела сделана. Теперь осталось сконфигурировать библиотеку и собрать. Запускаем командную строку, да не простую, а ту, которая есть в ярлыках для VS:


Теперь необходимо перейти в запущенной командной строке в место "дислокации" исходников, например:

cd /d e:\Libs\qt480static\

Теперь запускаем конфигурирование, т.е. дописываем в командную строку:

configure -static -release -opensource -fast

Полный список параметров конфигурирования можете посмотреть введя configure -help.
Запускаем и ждём несколько минут). При этом подтверждаем согласие с лицензией (да да, и обязательно прочтите её).


Ну и затем:

nmake

Подождав некоторое (долгое время) запустим установку:


nmake install

Лично у меня выдаёт ошибку с кодом 0x2 после nmake install, но библиотека всё равно работает. Не знаю в чём подвох, в интернете различных решений много, но в точности с моей проблемой я ничего не нашёл, работает и фиг с ней :)
В своей среде задаёте qmake из папки bin и собираете что хотите.




2 комментария:

  1. Ммм, мне больше понравилась статья про статическую сборку в Qt SDK, которая описана http://habrahabr.ru/post/152377/

    ОтветитьУдалить
  2. Частично согласен. Статья на хабре шире и подробнее. Но и сборка под mingw попроще будет и рассчитана на уже установленную Qt SDK.
    Но практика показала что в редких случаях возникает необходимость собрать это дело под студию.
    Я лично с этой проблемой сталкивался, когда во втором потоке проекта Qt + OpenCV приложение вылетало. И на тот момент решением была только сборка под студию.В следующей статье в скриншотах тоже добавлю как подключить библиотеку в Creator :)

    ОтветитьУдалить