python — Статическое построение Qt 5.7.0 не завершается при использовании MinGW 6.3.0

Недавно мне удалось собрать статический Qt 5.7.0 с использованием MinGW 5.3.0, который поставляется с динамической версией. Для того, как я это сделал, я следовал инструкциям по ссылке:

https://wiki.qt.io/Building_a_static_Qt_for_Windows_using_MinGW

Никаких ошибок не возникало при создании статических предупреждений Qt (ожидаем (MANY) об устаревших std::auto_ptr). После установки Qt Version и Kit в Qt Creator, он успешно создал статически связанный исполняемый файл (нет даже CONFIG += static был необходим).

Но, кажется, что код может быть скомпилирован только с версией MinGW, с которой был собран статический Qt, где это условие не присутствовало в динамической версии, так как я мог компилировать и связывать код Qt как с MinGW 5.3.0, так и с MinGW 6.3. 0. Попытка использовать MinGW 6.3.0 со статическим Qt (построенным с MinGW 5.3.0) приводит к множеству неопределенных ошибок ссылок, таких как:

error: undefined reference to `QApplication::QApplication(int&, char**, int)'

Так что, похоже, ни одна библиотека Qt не связана здесь (qmake не совместимо или что-то).

Но это не обескуражило меня. Я просто повторил шаги из ссылки снова, но теперь собираю статический Qt с MinGW 6.3.0 (можно установить флаги, чтобы скрипт мог знать, какую версию MinGW использовать).

Это было многообещающе, скрипт собирал Qt около 50 минут, а затем ошибка остановила весь процесс:

// [...millions of console lines...]
cd qtdeclarative\ && ( if not exist Makefile C:\Qt\Static\src\qt-everywhere-opensource-src-5.7.0\qtbase\bin\qmake C:\Qt\
Static\src\qt-everywhere-opensource-src-5.7.0\qtdeclarative\qtdeclarative.pro -o Makefile ) && D:/Programming_Tools/Nuwe
n/MinGW/bin/mingw32-make.exe -f Makefile install
'python' is not recognized as an internal or external command,
operable program or batch file.
Project ERROR: Building QtQml requires Python.
MinGW\bin\mingw32-make.exe: *** [Makefile:338: module-qtdeclarative-install_subtargets] Error 3
MinGW\bin\mingw32-make.exe: Target 'install' not remade because of errors.
Press Enter to continue...:

Самая важная часть здесь, конечно, 'python' is not recognized as an internal or external command, Теперь это СТРАННЫЙ, потому что у меня установлен python 3.5.2 в переменные среды PATH.

После этого я попытался вызвать python в PowerShell, и вот результат:

PS C:\Users\Ebisu\Downloads> python
python : The term 'python' is not recognized as the name of a cmdlet, function, script file, or operable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ python
+ ~~~~~~
+ CategoryInfo          : ObjectNotFound: (python:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

Теперь я открыл новый сеанс PowerShell и снова вызвал python. Вот результат:

PS C:\Users\Ebisu\Downloads> python
Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:01:18) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
PS C:\Users\Ebisu\Downloads>

Теперь мой разум был взорван. Какие? Я попытался запустить скрипт в этой новой сессии снова, но он остановился в том же месте, и СНОВА, питон не распознается после него. Как это возможно? Как Python может стать невидимым во время выполнения скрипта?

Также обратите внимание, мне удалось использовать qmake.exe которая вышла из этой приостановленной сборки, и она компилирует и связывает код Qt с MinGW 6.3.0, ожидая, что он не может использовать какие-либо модули, такие как QT += multimedia (не так плохо, как я ожидал, но все же я хотел бы использовать модули).

0

Решение

Просто сталкиваюсь с той же проблемой. Я просто хотел добавить, что в моем случае исправление пути для включения python не помогло, так как $ env: PYTHONPATH все еще указывал на мою установку на python3, а затем скрипт выдавал другую ошибку

((File "Lib/site.py", line 176
file=sys.stderr)
^
SyntaxError: invalid syntax).

Добавление одной из этих строк в сценарий powershell исправляет ошибку:

$env:PYTHONPATH = "$MingwDir\opt\bin"

или же

$env:PYTHONPATH = ""
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]