Баги в qt_add_qml_module?
От: SaZ  
Дата: 27.11.23 00:01
Оценка: 3 (1)
Всем доброго времени суток.

Пытаюсь написать нормальный 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 и уже морально устарели. На многих проектах используют самописные костыли.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.