Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: Rododendron от Октябрь 13, 2017, 08:54



Название: Помогите собрать 64-битную версию qt4.8.(6-7) на Win7
Отправлено: Rododendron от Октябрь 13, 2017, 08:54
Мне нужна 64-битная версия Qt4 под Win7. Какой компилятор лучше всего для этого подойдет, при условии, что используется С++11 и С++14? Желательно, чтобы работал дебаггер.
Я пробовал компилировать с помощью MSVC-2015, который поддерживается в Qt4.8.7, но не удалось это сделать.
Ошибка при компиляции такова:
Код:
c:\qt-everywhere-opensource-src-4.8.7>nmake
Microsoft (R) Program Maintenance Utility Version 14.00.24210.0
Copyright (C) Microsoft Corporation.  All rights reserved.
        C:\qt-everywhere-opensource-src-4.8.7\bin\qmake C:/qt-everywhere-opensou
rce-src-4.8.7/\projects.pro  -o Makefile -spec win32-msvc2015
Could not find mkspecs for your QMAKESPEC(win32-msvc2015) after trying:
        C:\Qt\Qt-4.8.7_64bit\mkspecs
Error processing project file: C:/qt-everywhere-opensource-src-4.8.7//projects.p
ro
NMAKE : fatal error U1077: 'C:\qt-everywhere-opensource-src-4.8.7\bin\qmake.EXE'
 : return code '0x3'
Stop.

Пробовал по этой инструкции (https://stackoverflow.com/a/32848999/7790835) собрать Qt4.8.6, тоже не получилось - та же ошибка.

Пробовал компилятор mingw64:
Код:
g++ --version
g++ (x86_64-posix-seh, Built by strawberryperl.com project) 7.1.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Та же ошибка:
Код:
> mingw32-make -j8
C:/qt-everywhere-opensource-src-4.8.7/bin/qmake C:/qt-everywhere-opensource-src-4.8.7//projects.pro  -o Makefile -spec win32-g++-4.6
Could not find mkspecs for your QMAKESPEC(win32-g++-4.6) after trying:
        D:/Qt/Qt-4.8.7_64bit\mkspecs
Error processing project file: C:/qt-everywhere-opensource-src-4.8.7//projects.pro
Makefile:2: recipe for target 'all' failed
mingw32-make: *** [all] Error 3

Помогите с настройкой mkspec.. ничего вразумительного не нашел в сети.
Устанавливал переменную среды:
Код:
set QMAKESPEC=C:\qt-everywhere-opensource-src-4.8.7\mkspecs
Тоже ноль эффекта. Все равно ищет на диске D.


Название: Re: Помогите собрать 64-битную версию qt4.8.(6-7) на Win7
Отправлено: Rododendron от Октябрь 13, 2017, 09:59
Извиняюсь за неточность. QMAKESPEC надо задавать до конфигурирования!
С правильным QMAKESPEC не может сконфигурировать, пишет, что в mkspecs нет поддерживаемой платформы..
Значит папка win32-msvc2015 относится только к 32-битной версии.. Это печально..
Чем скомпилять КуТ? Неужели никому не понадобилась 64-битная версия 4 КуТ под Винду?
Может проще делать кросскомпиляцию из Линукс???


Название: Re: Помогите собрать 64-битную версию qt4.8.(6-7) на Win7
Отправлено: kuzulis от Октябрь 13, 2017, 10:49
Цитировать
c:\qt-everywhere-opensource-src-4.8.7>nmake

Нужно компилировать из 64-битного окружения командной строки, предоставляемой msvc (https://wiki.qt.io/How_to_build_64bit_Qt_for_windows). А у тебя хз что там. Ты вообще, гуглишь (https://fami.codefreak.ru/mirrors/qt/unofficial_builds/qt4.8.7-msvc2015/)?

Цитировать
Может проще делать кросскомпиляцию из Линукс???

Из задницы  >:(


Название: Re: Помогите собрать 64-битную версию qt4.8.(6-7) на Win7
Отправлено: qate от Октябрь 13, 2017, 11:42
Неужели никому не понадобилась 64-битная версия 4 КуТ под Винду?

а зачем ?


Название: Re: Помогите собрать 64-битную версию qt4.8.(6-7) на Win7
Отправлено: Rododendron от Март 06, 2018, 13:53
Неужели никому не понадобилась 64-битная версия 4 КуТ под Винду?

а зачем ?


Если вам достанется старый проект, который трудно перенести с Qt4 на Qt5, но при этом нужно сделать так, чтобы он мог кушать более полутора гигов памяти, то вы призадумаетесь о 64-битной Qt4.


Судя по всему, собрать Qt-4.8 с помощью msvc, который идет с бесплатной студией Express, вряд ли удастся. Видел одну статью, как это сделать с помощью профессиональной версии. Т.к. платной студии у меня нет, то пытался собрать Qt4 с помощью MinGW-64, и тоже безрезультатно, были ошибки при сборке. Так и забросил это дело, но появился еще один проект, в котором инклудятся большие массивы данных прямо в стек, мне было лень переделывать программу, и я снова решил заполучить себе 64-битную Qt4. И на этот раз получилось!

Может кому пригодится.

Вам поможет msys2, в котором есть пакетный менеджер pacman, через который можно поставить все необходимое, и ничего компилировать не придется.

В консоли msys64:

Код:
pacman --needed -S git mingw-w64-x86_64-gcc base-devel
pacman -S mingw-w64-x86_64-qt4

Аналогично можно поставить qt5:

Код:
pacman -S mingw-w64-x86_64-qt5

Креатор устанавливать не нужно. В своем креаторе добавляете профиль, путь к qmake будет примерно таким: C:\msys64\mingw64\bin\qmake.exe

Одновременно qt5 и qt4 установлены быть не могут, но это не проблема, т.к. установка занимает около 2 минут. Найти в сети работающую Qt5 для 64-битного компилятора еще не проблема, а вот с qt4 я облазил очень много сайтов, и нигде не было работающего решения, а самому собрать так и не удалось.

Надеюсь, кому-то поможет.


Название: Re: Помогите собрать 64-битную версию qt4.8.(6-7) на Win7
Отправлено: ssoft от Март 07, 2018, 10:15
Бывают, конечно, возникают небольшие проблемы со сборкой, но можно ведь код Qt подправить.

Нашел свои правки для 4.7.4 для сборки mingw-5.3.0-64bit
Цитировать
Перед сборкой необходимо внести изменения в исходные коды Qt:

./src/corelib/tools/qsimd.cpp - в строке 288 заменить блок
Код
C++ (Qt)
#if defined (Q_OS_WIN64)
   {
      int info[4];
      __cpuid(info, 1);
      feature_result = info[2];
   }
#elif defined(Q_CC_GNU)
   quint64 tmp;
   asm ("xchg %%rbx, %1\n"
        "cpuid\n"
        "xchg %%rbx, %1\n"
       : "=c" (feature_result), "=&r" (tmp)
       : "a" (1)
       : "%edx"
       );
#endif
на

Код
C++ (Qt)
#if defined(Q_CC_GNU)
   quint64 tmp;
   asm ("xchg %%rbx, %1\n"
        "cpuid\n"
        "xchg %%rbx, %1\n"
       : "=c" (feature_result), "=&r" (tmp)
       : "a" (1)
       : "%edx"
       );
#elif defined (Q_OS_WIN64)
   {
      int info[4];
      __cpuid(info, 1);
      feature_result = info[2];
   }
#endif
Командная строка для сборки

Код:
> configure.exe -opengl desktop -fast -nomake demos -nomake examples -no-libtiff -mp

Цитировать
Одновременно qt5 и qt4 установлены быть не могут. ...

Из пакетов может быть и не могут, а так сколько угодно).