Всем доброго времени суток.
Пытаюсь написать нормальный cmake скрипт для сборки и деплоя кутэ приложения (пока только под мак).
Входные условия: два таргета, основное приложение — чисто запускалка всей логики. Вся логика в статической либе.
Суть проблемы: некорректно отрабатывает macdeployqt. Тулза не учитывает модули, которые я импортирую в либе. Но стоит прописать эти импорты в любом .qml файле таргета-приложения, как всё резко начинает работать.
Чтобы не быть голословным, вот наброски:
https://github.com/dsazonoff/qt-qml-cmake-testbed/tree/main
И соответственно коммит, который показывает проблему:
https://github.com/dsazonoff/qt-qml-cmake-testbed/commit/9fb8ebf13a6664a5c4f17f5a4fedf8492a1f499d
Если же
import QtQuick.Dialogs сделать внутри таргета приложения, а не статической либы, то всё ок.
Мысли вслух:
— Где-то что-то не так делаю с target_link_libraries и областью видимости (PRIVATE/PUBLIC)
— Я как-то не так юзаю [qt_add_qml_module](
https://github.com/dsazonoff/qt-qml-cmake-testbed/commit/4ed7d9fc248966e6c5fa3019fdfdd641c35fd8c7#diff-c2087cfe428fc15a62ae4ba4a7c02fe67e0216a6993335831102ddef095d592d)
— Я что-то ещё не понимаю про импорт и qml модули...
Определённые ограничения:
— Я не рассматриваю Qt ниже версий 6.6, ибо в последних есть много удобных плюшек
— Пока актуален только мак, но оно всё более-менее кросс-платформенно с xxxxdeployqt
— Не надо предлагать в коде дёргать всякие addImportPath — оно должно само отрабатывать (и отрабатывает для приложений, а не либ), но если ошибка в этом — то укажите
— Не хочется прибегать ни к каким костылям при деплое
Собственно я не поленился сделать репо, которое собирает hello world для отладки, возможно кто-то тыкнет меня в ошибку, а то я уже несколько недель мучаюсь.
P.S. по сути это продолжение
вот этогоАвтор: SaZ
Дата: 28.07.23
топика. По поводу деплоя кутэ5 всё печально. Самые легкогуглящиеся решения требуют питон2 и уже морально устарели. На многих проектах используют самописные костыли.