Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Как собрать Qt 5.1.1 при помощи Visual Stusio 2012 под XP

Anna | 24.06.2014 | нет комментариев
В этой статье нет ничего неестественного. Я хотел легко собрать совместно все нюансы и задачи, с которыми я столкнулся, связанные с построением Qt в одной статье — внезапно кому-нибудь сгодится.

Задача заключалась раньше каждого в том что бы избавиться от задач со звуком под XP, путем применения dsengine как альтернативу самописного плагина воспроизведения звука (на основе ffmpeg), а для Windows Vista дозволено абсолютно применять wmfengine. Следственно выбор пал на версию 5.1.1.
Так же я преследовал цель получить больше расширенную версию языка C 11, следственно я собирал под Visual C 11.0 ( x86 ). Задач с x64 версией библиотек задач нет ее дозволено скачать с официального сайта.
Так же в наименовании статьи присутствует “XP” — потому что именно в на этой операционной системе и появлялись задачи, так как.

Выходит, приступим…
  1. Сначала все легко — ищем на официальном сайте на странице загрузок ( qt-project.org/downloads ) подходящий нам вариант либо сразу скачиваем исходники ( download.qt-project.org/official_releases/qt/5.1/5.1.1/single/ ).
  2. Дальше распаковываем (основное в пути отменнее не иметь ни пробелов).
  3. Дальше ищем все зависимости, читаем ( qt-project.org/wiki/Building_Qt_5_from_Git )
    Понимаем что нам необходимо:

    • icu
    • pthreads
    • Ruby
    • утилиты из папки в корне архива gnuwin32
    • Microsoft DirectX SDK (для компиляции qt 5 требуется DirectX SDK — он не ставиться если есть Microsoft Visual C 2010 x86/x64 redistributable — 10.0.(number over 30319))

    В выводе получаем дальнейший bat-файл vars32.bat:

    REM For fast compiling
    set CL=/MP
    REM include
    set INCLUDE=e:share_open_source_icu-51.2-vs2012include;e:share_open_source_pthreadsinclude;%INCLUDE%
    REM lib
    set LIB=e:share_open_source_icu-51.2-vs2012lib;e:share_open_source_pthreadslibx86;%LIB%
    REM tools
    set PATH=e:share_open_source_icu-51.2-vs2012bin;C:Ruby200-x64bin;%CD%gnuwin32bin;C:Python27;C:Perl64bin;C:Program Files (x86)Microsoft DirectX SDK (June 2010)Utilitiesbinx86;%CD%qtbasebin;e:share_open_source_pthreadsdllx86;%PATH%
    
  4. Для успешной сборки под XP
    • читаем статью на msdn о том как компилировать (blogs.msdn.com/b/vcblog/archive/2012/10/08/10357555.aspx
    • проверяем что у нас Visual Studio имеет правда бы один update
    • обращаем внимание на опечатку в путях (v7.1A)
    • не забываем про запуск скрипта для утилиты nmake с параметром
    • дописываем vars32. bat:
      	…
      REM for nmake
      CALL "C:Program Files (x86)Microsoft Visual Studio 11.0VCvcvarsall.bat" x86
      REM for XP
      set INCLUDE=%ProgramFiles(x86)%Microsoft SDKsWindowsv7.1AInclude;%INCLUDE%
      set PATH=%ProgramFiles(x86)%Microsoft SDKsWindowsv7.1ABin;%PATH%
      set LIB=%ProgramFiles(x86)%Microsoft SDKsWindowsv7.1ALib;%LIB%
      set CL=/D_USING_V110_SDK71_;%CL%
      
    • Так как этого может быть неудовлетворительно изменяем файлы конфигурации Qt:
      а) Файл qtbasesrccorelibioqfilesystemengine_win.cpp, строка 574, меняем на

      #  if defined(Q_CC_MINGW) || (defined(Q_CC_MSVC) && _MSC_VER < 1700) || (defined(Q_CC_MSVC) && _MSC_VER >= 1700 && defined(_USING_V110_SDK71_))
      

      Напротив из-за объявленной дерективы _USING_V110_SDK71_ союрать не удастся
      б) Файл qtbaseqmakeMakefile.win32
      в переменный CFLAGS_BARE добавляем по -DUNICODE -D_USING_V110_SDK71_
      в) Файл qtbasemkspecswin32-msvc2012qmake.conf, в переменную QMAKE_CFLAGS:

      QMAKE_CFLAGS = -nologo -Zm200 -Zc:wchar_t -D_USING_V110_SDK71_
      

      , а так же QMAKE_LFLAGS_CONSOLE и QMAKE_LFLAGS_WINDOWS:

      QMAKE_LFLAGS_CONSOLE    = /SUBSYSTEM:CONSOLE,5.01
      QMAKE_LFLAGS_WINDOWS    = /SUBSYSTEM:WINDOWS,5.01
      
  5. Дальше нам потребуется сконфигурировать Qt. Для этого мы создаем conf32.bat и дописываем в него следующую строку
    configure -no-angle -mp -debug-and-release  -no-audio-backend -opengl desktop  -platform win32-msvc2012  -skip qtwebkit -skip qtwebkit-examples -skip qttranslations -icu -prefix "c:devbuilding_qtbinx86" -opensource -confirm-license  -nomake tests  -nomake examples
    

    -no-angle — так как в моем плане применяется OpenGL “напрямую”, у меня появились задачи с ANGLE (http://qt-project.org/wiki/Qt-5-on-Windows-ANGLE-and-OpenGL). Если лаконично как я осознал это добавочная абстракция над API OpenGL, следственно у меня и появились задачи с одноименными сущностями.

    • -mp — то же что CL=/MP — для больше стремительной компиляции
    • -no-audio-backend — без встреонного wmf медиа-обслуживания
    • -opengl desktop — собрать с помощью opengl для настольных приложений
    • -skip qtwebkit и -skip qtwebkit-examples — не портите себе самочувствие соберите их потом, это недостаток разработчиков
    • -skip qttranslations — я исключил потому что если взять версию icu версии 50 то lrelease.exe выбросит ошибку. Данный модуль на мой взор не так значим следственно тоже соберем, но потом.
    • -prefix «c:devbuilding_qtbinx86» — путь к собранным библиотекам
    • -nomake tests -nomake examples — исключаем и экономим время (даже на моем рабочем компьютере сборка без webkit’а занимает 30 минут)
  6. Так же советую воспользоваться jom (http://qt-project.org/wiki/jom). Крошечная утилита которая распределяет работу nmake на потоки, число которых равняется числу ядер. Скажем у меня i7 c якобы 8 ядрами — соответственно потоков будет 8
  7. Дозволено прописать ее в путях и воспользоваться комфортным редактором переменных окруженияrepidee ( www.rapidee.com/ru/about ). Не забываем перезапускать командную строку, что бы метаморфозы вступили в силу
  8. И так сборка. Запускаем cmd.exe в корне папке распакованного архива и набираем:
    vars32.bat && conf32.bat
    

    Убеждаемся что у нас Qt настроен как нам необходимо

  9. Продолжаем. Вбиваем:если без webkit’a
    jom && jom install
    

    если все разом (и пойти спать)

    jom && jom install && cd qttranslations && qmake && jom install && cd ..qtwebkit && qmake && jom && jom install
    
    • Запускаем qmake (из qtbase/bin) Дабы сконфигурировать какой-нибйдь модуль и получить makefile для nmake. Так дозволено к примеру скачать добавочный модуль сконфигурировать и собрать.
    • Для qttranslations не забываем про icu версии 51. Так же могу подметить, что приложения на Qt могут падать именно следственно. Что бы проверить корректность работы icu дозволено скажем испробовать вызвать QTextCodec::codecForName(“CP1251”), если кодек удалось получить то все отлично.
    • Мне пришлось допиливать qtwebkit/bridge api — не работает передача параметров QtRuntimeObject из JS в C , и видимо теснее давным-давно.
    • Если приложение не запускается под XP, то необходимо посмотреть зависимости через depends (http://www.dependencywalker.com/). Скорее каждого позабыли про msvcp110.dll и msvcr110.dll.

Спасибо за внимание! Верю кому нибудь сгодится. Мое приложение восхитительно работает.

 

Источник: programmingmaster.ru

 

Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB