Пришло время обновления.
Компилятор TGM-GCC 10.3.0 (x64)
MinGW-w64 заменил на TDM-GCC 10.3.0. Скачал установщик, и установил в песочнице (Windows Sandbox) по пути c:\dev\10.3.0\x64\tdm-gcc. По окончанию установки скопировал папку из песочницы в хостовую систему.
OpenSSL 3.0.3
Так как мне нужен Qt с поддержкой OpenSSL, буду его собирать. Сборкубуду производить в MSys2, поскольку у меня он всё равно есть (если он не нужен, его вместе с компилятором можно установить в песочнице).
Качаю исходники openssl-3.0.3.tar.gz, распаковываю и перехожу в директорию с исходниками (у меня это /d/tmp/build/openssl-3.0.3). Поскольку я хочу использовать TDM-GCC, то ставлю его в пути раньше всего остального.
$ cd /d/tmp/build/openssl-3.0.3
$ export PATH=/c/dev/10.3.0/x64/tdm-gcc/bin/:$PATH
Конфигурирую, собираю и устанавливаю статическую сборку
$ ./Configure no-shared --prefix=/c/dev/10.3.0/x64/openssl-3.0.3/static mingw64
$ mingw32-make -j 16
$ mingw32-make install_sw
Конфигурирую, собираю и устанавливаю динамическую сборку
$ ./Configure shared --prefix=/c/dev/10.3.0/x64/openssl-3.0.3/shared mingw64
$ mingw32-make -j 16
$ mingw32-make install_sw
Qt 5.15.4
Для сборки потребуется python (я использовал 3.9.7, у меня он расположен в C:\dev\tools\python-3.9.7\), если его нет, то придётся поставить.
Качаю исходники qt-everywhere-opensource-src-5.15.4.zip, распаковываю в d:\tmp\build\qt-everywhere-src-5.15.4. Сборку буду производить out-of-source, поэтому создаю рядом пустую директорию для сборки d:\tmp\build\qt-everywhere-src-5.15.4-build.
Начну со статической сборки. Запускаю командную строку, перехожу в директорию сборки, конфигурирую, компилирую и устанавливаю статическую сборку (release-only). Из-за проблем со сборкой отключаю рендеринг через DirectX12 и поддержку WMF, поскольку мне они всё равно не нужны.
d:\> cd d:\tmp\build\qt-everywhere-src-5.15.4-build
d:\tmp\build\qt-everywhere-src-5.15.4-build> ..\qt-everywhere-src-5.15.4\configure -prefix C:\dev\10.3.0\x64\Qt\5.15.4\static OPENSSL_LIBS="-llibssl -llibcrypto -lcrypt32 -lgdi32 -lws2_32" -openssl-linked -I C:\dev\10.3.0\x64\openssl-3.0.3\static\include -L C:\dev\10.3.0\x64\openssl-3.0.3\static\lib64 -opensource -nomake tests -no-compile-examples -confirm-license -release -optimize-size -static -c++std c++17 -static-runtime -silent -feature-relocatable -opengl desktop -no-wmf -no-feature-d3d12
d:\tmp\build\qt-everywhere-src-5.15.4-build> mingw32-make -j16
d:\tmp\build\qt-everywhere-src-5.15.4-build> mingw32-make install
Теперь динамическая сборка. Удаляю всё из директории сборки, конфигурирую, компилирую и устанавливаю динамическую сборку (debug+release). Из-за проблем со сборкой отключаю рендеринг через DirectX12, а вот поддержку WMF не отключаю, потому что и с ней собирается нормально.
d:\tmp\build\qt-everywhere-src-5.15.4-build> set OPENSSL_HOME=C:\dev\10.3.0\x64\openssl-3.0.3
d:\tmp\build\qt-everywhere-src-5.15.4-build> ..\qt-everywhere-src-5.15.4\configure -prefix C:\dev\10.3.0\x64\Qt\5.15.4\shared OPENSSL_LIBS="-llibssl -llibcrypto -lcrypt32 -lgdi32 -lws2_32" -openssl-linked -I C:\dev\10.3.0\x64\openssl-3.0.3\static\include -L C:\dev\10.3.0\x64\openssl-3.0.3\static\lib64 -opensource -nomake tests -no-compile-examples -confirm-license -debug-and-release -optimize-size -c++std c++17 -silent -feature-relocatable -opengl desktop -no-feature-d3d12
d:\tmp\build\qt-everywhere-src-5.15.4-build> mingw32-make -j16
d:\tmp\build\qt-everywhere-src-5.15.4-build> mingw32-make install
QtCreator 7.0.2
Качаю архив с исходниками, распаковываю в d:\tmp\build\qt-creator-opensource-src-7.0.2 и обнаруживаю, что теперь его нельзя собрать через qmake – только CMake или QBS. Выбираю CMake – он мне знаком и его можно скачать уже собранным в виде архива. Качаю CMake-3.23.2 и распаковываю в c:\dev\tools\cmake-3.23.2-windows-x86_64. Python буду использовать тот же, что и при сборке Qt.
Сборку буду производить out-of-source, поэтому создаю директорию для сборки d:\tmp\build\qt-creator-opensource-src-7.0.2-build.
Запускаю командную строку, перехожу в директорию сборки, устанавливаю необходимые пути, конфигурирую (с поддержкой новомодной и расхваливаемой QBS – надо же посмотреть, что это) и пытаюсь собрать.
d:\> cd d:\tmp\build\qt-creator-opensource-src-7.0.2-build
d:\tmp\build\qt-creator-opensource-src-7.0.2-build> set PATH=C:\dev\tools\python-3.9.7;C:\dev\tools\cmake-3.23.2-windows-x86_64\bin;C:\dev\10.3.0\x64\Qt\5.15.4\shared\bin;C:\dev\10.3.0\x64\tdm-gcc\bin;%PATH%
d:\tmp\build\qt-creator-opensource-src-7.0.2-build> cmake -G"MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release -DBUILD_QBS=ON ..\qt-creator-opensource-src-7.0.2
d:\tmp\build\qt-creator-opensource-src-7.0.2-build> cmake --build . -j 16
Поскольку у меня сборка ломается с вот таким сообщением об ошибке
In file included from D:\tmp\build\qt-creator-opensource-src-7.0.2\src\shared\qbs\src\shared\qtscript\src\script\bridge\qscriptfunction.cpp:43:
D:/tmp/build/qt-creator-opensource-src-7.0.2-build/src/shared/qbs/src/lib/scriptengine/include/QtScript/5.15.4/QtScript/private/qscriptengine_p.h:1:10: fatal error: ../../../../../../../../../../../../qt-creator-opensource-src-7.0.2/src/shared/qbs/src/shared/qtscript/src/script/api/qscriptengine_p.h: No such file or directory
1 | #include "../../../../../../../../../../../../qt-creator-opensource-src-7.0.2/src/shared/qbs/src/shared/qtscript/src/script/api/qscriptengine_p.h"
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
начинаю рукосуйствовать. Разбираться с источником проблемы я не хочу, поэтому лечение будет симптоматическим – в директории d:\tmp\build\qt-creator-opensource-src-7.0.2-build\src\shared\qbs\src\lib\scriptengine\include\QtScript\5.15.4\QtScript\private лежат заголовочные файлы, содержимое которых и не позволяет проекту собраться. Во всех этих файлах нужно убрать одно “../”
Например:
Было | Стало |
include “../../../../../../../../../../../../qt-creator-opensource-src-7.0.2/src/shared/qbs/src/shared/qtscript/src/script/parser/qscriptastfwd_p.h” | include “../../../../../../../../../../../qt-creator-opensource-src-7.0.2/src/shared/qbs/src/shared/qtscript/src/script/parser/qscriptastfwd_p.h” |
Теперь можно приступить к сборке и установке
d:\tmp\build\qt-creator-opensource-src-7.0.2-build> cmake --build . -j 16
d:\tmp\build\qt-creator-opensource-src-7.0.2-build> cmake --install . --prefix C:\dev\tools\QtCreator-7.0.2\
d:\tmp\build\qt-creator-opensource-src-7.0.2-build> cmake --install . --prefix C:\dev\tools\QtCreator-7.0.2\ --component Dependencies
Если всё прошло успешно – поздравляю, но у меня на последнем этапе возникла вот такая проблема:
'C:/dev/tools/python-3.9.7/python.exe' 'D:/tmp/build/qt-creator-opensource-src-7.0.2/scripts/deployqt.py' 'C:\dev\tools\QtCreator-7.0.2\/bin/qtcreator' 'C:/dev/10.3.0/x64/Qt/5.15.4/shared/bin/qmake.exe'
Traceback (most recent call last):
File "D:\tmp\build\qt-creator-opensource-src-7.0.2\scripts\deployqt.py", line 41, in <module>
import common
ModuleNotFoundError: No module named 'common'
Патчу скрипт qt-creator-opensource-src-7.0.2\scripts\deployqt.py
Было
import argparse
import collections
import os
import locale
import sys
import subprocess
import re
import shutil
from glob import glob
import common
Стало
import argparse
import collections
import os
import locale
import sys
import subprocess
import re
import shutil
from glob import glob
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
import common
Запускаю повторно.
d:\tmp\build\qt-creator-opensource-src-7.0.2-build> cmake --install . --prefix C:\dev\tools\QtCreator-7.0.2\ --component Dependencies
