Для моих проектов Qt и плагинов qml я использую следующие правила. Это актуально для платформы win, но я надеюсь, что это будет полезно для вашей macOS
Каталог вывода одинаков для всех проектов:
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
Таким образом, все подкаталоги с CMakeLists и цели проекта будут встроены в один каталог. Это полезно для запуска проекта и окончательного развертывания.
Плагины Qml, которые я копирую в каталог
set_target_properties(targetProject PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/$<CONFIG>/plugins/${QmlPluginName}/)
После сборки плагина qml я копирую файл qmldir в RUNTIME_OUTPUT_DIRECTORY
add_custom_command(TARGET ${targetProject} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy
${QML_DIR_FILE}
${CMAKE_BINARY_DIR}/bin/$<CONFIG>/plugins/${QmlPluginName}/qmldir)
После этого у меня была структура каталогов hext:
/build_dir/bin/Debug/
|application.exe
|plugins/
| |QmlPluginName/
| | |qmldir
| | |QmlPluginName.dll
Так что после этих шагов не забудьте о:
QQmlApplicationEngine engine;
engine.addImportPath("./plugins");
P.S. извините за мой английский