Как разбить проект CMake на подпроекты
Разделяем на подпроекты существующий проект C++ на CMake
На проекте YouTubeAnalyzer используется свежий PySide6 и Python 3.11+. В связи с этим запуск программы возможен только на Windows 10 и выше (уже привычное требование в современных продуктах).
Но реальность как обычно другая. Есть пользователи, которые по разным причинам могут работать только с Windows 7(8). С одной стороны, можно их проигнорировать и просто развести руками, но с другой - помочь и попробовать перевести проект на технологии, совместимые с Windows 7. И в истории с Python/PySide это выполнимо.
Ниже привожу чек-лист портирования проекта на PySide6 под Windows 7 на примере YouTubeAnalyzer. Этот проект небольшой, поэтому вся работа заняла один вечер. На проектах большего размера целесообразность таких действий надо ставить под вопрос. Чек-лист как раз поможет сообразить, стоит ли игра свеч.
Перейти на Python 3.8. Это последняя версия Python, поддерживающая Windows 7. Если в проекте не используются фишки от Python 3.9+, то исправлений может вообще не быть. Иначе же что-то придется переписать. Например, отказаться от switch
.
Перейти на PySide2. По большей части API PySide6 и PySide2 не отличаются. Всё здесь даже немного проще, чем с Python 3.8. Если не используются специфические фишки PySide6, то вся работа сведется к элементарной замене import
-ов.
Проконтролировать версию OpenSSL. Последняя версия PySide2 (Qt 5.15.2.1) использует OpenSSL 1.1.1. Необходимо убедиться, что в системе есть ее библиотеки. Иначе модуль PySide2.QtNetwork
не сможет работать с SSL.
Заменить функцию QApplication.exec()
на QApplication._exec()
. Запуск главного обработчика событий в PySide2 выполнялся по-другому.
Заменить функцию QLibraryInfo.path()
на QLibraryInfo.location()
. Это относится к получению стандартных путей PySide.
В репозитории YouTubeAnalyzer порт на Windows 7 всегда находится на отдельной ветке port_win7
. Будущие версии планирую портировать здесь же, пока не отпадет необходимость либо не появится непортируемая функциональность. Чек-лист тоже будет обновляться.
Разделяем на подпроекты существующий проект C++ на CMake
Учимся создавать свое первое оконное приложение на Qt с использованием QMainWindow в среде QtCreator
Учимся создавать свою первую 3D модель тора в OpenCASCADE
Учимся работать с пул-реквестами на GitHub в личных репозиториях
Простейший пример исследования и патчинга исполняемого файла с помощью Cutter