Я пишу плагин / модуль QML для пользовательских элементов управления GUI для большого проекта на работе. Мы используем CMake для построения проекта. Основная структура модуля QML (после компиляции) должна быть такой:
MyModule
myplugin.dll
control1.qml
control2.qml
…
Самое важное, что все файлы qml и подключаемый модуль общей библиотеки (в примере myplugin.dll) ДОЛЖНЫ быть размещены в каталоге с EXACTLRY именем модуля (в примере MyModule). В качестве шага после сборки все qml-файлы копируются в этот двоичный каталог вывода.
И вот в чем проблема: скомпилированные бинарные файлы (в примере myplugin.dll) помещаются в каталоги Debug
, Release
и т. Д. Внутри выходного каталога. Из-за этого результат выглядит так: MyModule/Debug/myplugin.dll
- и модуль не работает. Я пытался манипулировать RUNTIME_OUTPUT_DIRECTORY_DEBUG
, RUNTIME_OUTPUT_DIRECTORY_RELEASE
и всем этим грязным зоопарком, но ... это не вариант, потому что, насколько я знаю, типы build-config могут быть пользовательскими, поэтому я не могу предвидеть все возможные варианты RUNTIME_OUTPUT_DIRECTORY_
и укажите их заранее.
Есть ли какой-нибудь нормальный способ структурировать мой выходной каталог внутри этих Debug
, Release
, ConfigIDontKnowAboutYet
? Например, вместо того, чтобы сделать это следующим образом: MyModule/Debug/myplugin.dll
- превратить его в следующее: MyModule/Debug/MyModule/myplugin.dll
- потому что последняя часть пути должна быть точно .../MyModule/myplugin.dll
, иначе это не сработает. Если такого пути нет, как люди справляются с этим?
Еще одна важная вещь заключается в том, что этот модуль должен использоваться большим проектом к add_subdirectory()
. И вот весь этот беспорядок Debug
- Release
- MyOwnConfig
делает все это еще сложнее.
Единственное более или менее найденное решение на данный момент заключалось в install()
получении в результате скомпилированных и qml файлов MyModule в двоичном каталоге вывода более крупного проекта, который содержит MyModule в качестве зависимости. Однако есть еще одна проблема. Оказывается, в этом случае мне нужно установить MyModule дважды: один раз в двоичный каталог вывода более крупного проекта, чтобы собрать / протестировать / запустить его, и второй раз, когда я установил сам более крупный проект.
Буду очень признателен за любые предложения. Кроме того, если у кого-то есть довольно большой проект, который использует CMake, C ++ и зависит от модулей QML, я был бы очень признателен, если бы они предоставили ссылку, чтобы взглянуть на него. Спасибо.