Название: Перенос Qt plugin-продукта из qmake в Qbs Отправлено: fisenkdima от Май 29, 2017, 11:50 Мы тут надумали перевести свои проекты с qmake-а на Qbs, но возникала загвоздка с подпроектом, являющим собой qtplugin
В qmake-е это выглядит как-то так: player.pro Код: TEMPLATE = subdirs madiaplayer.pro - dll lib Код: TEMPLATE = lib imageplayer.pro - qt plugin Код: TEMPLATE = lib И работает замечательно. А вот с Qbs возникла загвоздка. На код проекта: player.qbs Код: Project { MediaPlayer.qbs Код: DynamicLibrary { ImagePlayer.qbs Код: DynamicLibrary { и такие заголовочные файлы: MediaPlayer.h Код: #include "MediaPlayer_global.h" ImagePlayer.h Код: #include "../mediaplayer/MediaPlayer.h" на этапе линковки ImagePlayer.dll я получаю следующие ошибки: ImagePlayer.cpp.obj: unresolved external symbol "public: static struct QMetaObject const MediaPlayer::staticMetaObject" (?staticMetaObject@MediaPlayer@@2UQMetaObject@@B) moc_ImagePlayer.cpp.obj: unresolved external symbol "public: static struct QMetaObject const MediaPlayer::staticMetaObject" (?staticMetaObject@MediaPlayer@@2UQMetaObject@@B) По всей видимости moc нагенерил чего-то не то, но почему, и как это поправить, понять не выходит =_= Может быть здесь найдётся кто-то, кто уже сталкивался с чем-то подобным? Название: Re: Перенос Qt plugin-продукта из qmake в Qbs Отправлено: ViTech от Май 29, 2017, 12:51 MediaPlayer.qbs Код: MediaPlayer { ImagePlayer.qbs Код: ImagePlayer { Эти MediaPlayer { <...> } и ImagePlayer { <...> } где-то ранее определены как Custom Modules and Items (http://doc.qt.io/qbs/custom-modules.html)? Иначе нужно использовать, например, DynamicLibrary (http://doc.qt.io/qbs/dynamiclibrary-item.html): MediaPlayer.qbs Код: DynamicLibrary { ImagePlayer.qbs Код: DynamicLibrary { И если есть дополнительные зависимости от модулей Qt, то их надо добавлять: Код: Depends { name: "Qt"; submodules: [ "core", "widgets", "concurrent" ] } Название: Re: Перенос Qt plugin-продукта из qmake в Qbs Отправлено: fisenkdima от Май 29, 2017, 13:18 Цитировать Эти MediaPlayer { <...> } и ImagePlayer { <...> } где-то ранее определены как Custom Modules and Items? Иначе нужно использовать, например, DynamicLibrary: Это заимпорченные через "import ... as ..." айтемы. И, да, я забыл их устранить, когда упрощал код в теме. Сейчас поправлю, как должно быть. Название: Re: Перенос Qt plugin-продукта из qmake в Qbs Отправлено: fisenkdima от Май 29, 2017, 13:20 И если есть дополнительные зависимости от модулей Qt, то их надо добавлять Да, зависимости есть и они корректно прописаны. Я их вырезал отсюда как несущественную информацию, дабы не перегружать описание Название: Re: Перенос Qt plugin-продукта из qmake в Qbs Отправлено: ViTech от Май 29, 2017, 13:36 Возможно нужно внимательнее проследить за cpp.defines, какие определения там получаются для каждой библиотеки. В частности, должны ли они экспортироваться.
Название: Re: Перенос Qt plugin-продукта из qmake в Qbs Отправлено: Авварон от Май 30, 2017, 19:22 Не вижу -DQT_PLUGIN или как-то так
|