fix(macOS): disable KDDockWidgets QtQuick frontend to resolve launch crash

Oak only uses KDDockWidgets' QtWidgets frontend. Building the QtQuick
frontend caused duplicate QML module registration when QtQuick.framework
initialized, resulting in a SIGABRT in QQmlMetaType::qmlInsertModuleRegistration.

- Set KDDockWidgets_FRONTENDS to qtwidgets in ext/CMakeLists.txt.
- Remove the -qmldir flags from macOS CD deploy since QML plugins are no
  longer needed.
This commit is contained in:
2026-07-13 15:54:55 +08:00
parent e16facf123
commit a4a932238c
2 changed files with 4 additions and 4 deletions
+1 -4
View File
@@ -130,10 +130,7 @@ jobs:
- name: Deploy Qt dependencies - name: Deploy Qt dependencies
run: | run: |
export PATH="$(brew --prefix qt@6)/bin:$PATH" export PATH="$(brew --prefix qt@6)/bin:$PATH"
macdeployqt build/app/Oak.app \ macdeployqt build/app/Oak.app
-qmldir=app \
-qmldir=ext/KDDockWidgets/src/qtquick/views/qml \
-verbose=2
# Re-sign after macdeployqt (it breaks signatures when modifying libs) # Re-sign after macdeployqt (it breaks signatures when modifying libs)
codesign --force --deep --sign - build/app/Oak.app codesign --force --deep --sign - build/app/Oak.app
+3
View File
@@ -18,4 +18,7 @@ add_subdirectory(core EXCLUDE_FROM_ALL)
set(KDDockWidgets_STATIC ON CACHE INTERNAL "Force KDDockWidgets to build statically") set(KDDockWidgets_STATIC ON CACHE INTERNAL "Force KDDockWidgets to build statically")
set(KDDockWidgets_QT6 ${BUILD_QT6} CACHE INTERNAL "Conform KDDockWidgets' Qt 6 setting to ours") set(KDDockWidgets_QT6 ${BUILD_QT6} CACHE INTERNAL "Conform KDDockWidgets' Qt 6 setting to ours")
# Oak only uses the QtWidgets frontend; building the QtQuick frontend causes
# duplicate QML module registration on macOS and pulls in unused dependencies.
set(KDDockWidgets_FRONTENDS "qtwidgets" CACHE INTERNAL "Only build the QtWidgets frontend for Oak")
add_subdirectory(KDDockWidgets EXCLUDE_FROM_ALL) add_subdirectory(KDDockWidgets EXCLUDE_FROM_ALL)