Здравствуйте.
Столкнулся с такой ситуацией: есть приложение, для него пишутся плагины (на базе QtPlugin конечно же). При разработке плагинов в руках разработчика есть лишь release версия основного приложения, при этом хотелось бы отлаживать свой плагин (через attach to process, например). При этом debug-сборка плагина основным приложением не загружается.
Причины вроде бы понятны: в документации четко сказано, что валидация плагинов идет по Build Key и что конфигурация плагина и основного приложения должны совпадать:
When building plugins to extend an application, it is important to ensure that the plugin is configured in the same way as the application. This means that if the application was built in release mode, plugins should be built in release mode, too.
Далее сказано, что в отладочных целях эту валидацию можно перегрузить, открыв тем самым возможность приложению загружать дебажные плагины и затем отлаживать их:
For debugging purposes, it is possible to override the run-time build key checks by configuring Qt with the QT_NO_PLUGIN_CHECK preprocessor macro defined.
Но к сожалению больше ничего про макрос QT_NO_PLUGIN_CHECK не сказано, и для меня осталось совершенно неясно: что же нужно сделать? Нужно пересобрать весь QT, предварительно включив этот макрос, или же достаточно определить макрос внутри своего приложения и пересобрать его?
После поиска в интернете и копания в исходниках Qt прихожу все же к выводу, что видимо этот макрос нужно использовать при сборке QT, тогда в методе QPluginLoader::load() проверка debug/release будет отключена. Однако хотелось бы быть более уверенным в этом, прежде чем браться за пересбор библиотеки.
Резюмирую мой вопрос: как использовать макрос QT_NO_PLUGIN_CHECK чтобы отключить строгую валидацию плагинов при загрузке в run-time и открыть возможность отладки плагинов, при наличии лишь release-версии основного приложения?
P.S. Буквально месяц назад на форуме разместили такой же вопрос, но ответа, увы, не последовало. Надеюсь на мой вопрос кто-нибудь все же сможет ответить