Содержание

Настройка Windows окружения

MSYS2

  1. Установка пакетного менеджера MSYS2, который упрощает управление компонентами сборочного окружения. Последняя версия MSYS2 c поддержкой Windows 7 здесь.
    • Установку рекомендуется производить в каталог c:/opt/MSYS64, что позволит устанавливать в единый каталог c:/opt/ и другие пакеты, например, Python и Qt.
    • При проблемах с фокусом в Windows 11 (отсутствует клавиатурный ввод после передачи фокуса мышью окну терминала MSYS2) предлагается отключить/переключить визуальные эффекты в системе.
  2. Обновление списка пакетов и основных пакетов оболочки MSYS2:
    pacman -Syu

    Справка по параметрам pacman'а доступна по ссылке.

  3. После основного этапа обновления необходимо ещё раз проверить наличие дополнительных обновлений:
    pacman -Syu

    При проблемах с доступом к тому или иному зеркалу репозитория программ можно отредактировать список зеркал в файлах /etc/pacman.d/mirrorlist.*

  4. Поиск программ в репоизтории MSYS2
    pacman -Ss <package_name>
  5. Установка программ из репозитория MSYS2
    pacman -S <package_name>

Python

  1. Загрузить установщик с официального сайта по ссылке. Для запуска Python 3.9+ в Windows 7 можно использовать неофициальный установщик PythonWin7.
  2. Установить Python из установщика.
    • Установку рекомендуется производить в каталог c:/opt/python/v3.xy
    • По окончании установки рекомендуется согласится с отключением ограничения на длину переменной PATH в 260 символов.
  3. Установка переменных окружения Python внутри MSYS2:
    • Добавить в файл ~/.bashrc пути до исполняемого файла Python и каталога Scripts
      export PATH="/c/opt/Python/v3.12:/c/opt/Python/v3.12/Scripts:$PATH"
  4. Ручная при необходимости установка переменных окружения в Windows:
    • Для Windows 10: Параметры → Система → О программе → Дополнительные параметры системы → Переменные среды… → Системные переменные → Path [Изменить].
      Добавить два соответствующих каталога:
      C:\opt\Python\v3.12
      C:\opt\Python\v3.12\Scripts

Qt over aqtinstall

Установка библиотеки Qt c помощью aqtinstall.

Qt from source

Установка из исходного кода
Проблема
Идея состоит в том, чтобы использовать статическую линковку стандартных библиотек в создаваемой программе. Тогда её распространение не потребует наличия библиотек MinGW. Всё хорошо работает для программ, не использующих внешние библиотеки. Однако, если подключить внешние библиотеки, то уже им требуются стандартные библиотеки и программа не работает. Для решения этой проблемы необходимо скомпилировать библиотеку Qt c параметрами -static-libgcc -static-libstdc++.
Инструкция по сборке доступна по ссылке.

MinGW

pacman -S mingw-w64-ucrt-x86_64-toolchain

Будет предложено установить следующие пакеты:

  - mingw-w64-ucrt-x86_64-binutils
  - mingw-w64-ucrt-x86_64-crt-git
  - mingw-w64-ucrt-x86_64-gcc
  - mingw-w64-ucrt-x86_64-gdb
  - mingw-w64-ucrt-x86_64-gdb-multiarch
  - mingw-w64-ucrt-x86_64-headers-git
  - mingw-w64-ucrt-x86_64-libmangle-git
  - mingw-w64-ucrt-x86_64-libwinpthread-git
  - mingw-w64-ucrt-x86_64-make
  - mingw-w64-ucrt-x86_64-pkgconf
  - mingw-w64-ucrt-x86_64-tools-git
  - mingw-w64-ucrt-x86_64-winpthreads-git
  - mingw-w64-ucrt-x86_64-winstorecompat-git
pacman -S make
pacman -S cmake 

При необходимости изменить генератор cmake, используемый по умолчанию, необходимо в файле /.bashrc установить соответствующую переменную среды:

export CMAKE_GENERATOR="MSYS Makefiles"

Для статической сборки стандартных библиотек C/C++ и библиотеки libwinpthread из MinGW необходимо установить некоторые параметры линковщика (подробности по ссылке):

export LDFLAGS="-static-libgcc -static-libstdc++ -Wl,-Bstatic,--whole-archive -lwinpthread -Wl,-Bdynamic,--no-whole-archive"
export PATH="/c/opt/MSYS64/mingw64/bin:$PATH"
C:\msys64\mingw64\bin

Deploying your application

Для развёртывания приложения в операционной системе Windows служит утилита windeployqt, которая копирует необходимые для работы приложения библиотеки из Qt и рантайма компилятора:

windeployqt application.exe

В случае, если рантайм компилятора не требуется, то используется параметр -no-compiler-runtime:

windeployqt application.exe -no-compiler-runtime

Подробности по ссылке https://doc.qt.io/qt-6/windows-deployment.html