ci: declare all oakengine handle types opaque for Qt metatypes; defer gtest discovery on Windows

- Linux GCC rejects QMetaType instantiation over incomplete types
  (static_assert(sizeof(T))); Q_DECLARE_OPAQUE_POINTER every opaque
  OakEngine* handle in the public headers so QList<OakEngineTask*> etc
  compile
- Windows: gtest discovery ran the fresh exe before the DLLs were next
  to it; use DISCOVERY_MODE PRE_TEST on WIN32 and copy the DLLs for
  ctest time
This commit is contained in:
2026-08-02 17:44:51 +08:00
parent d57c812fa6
commit 824e352da1
16 changed files with 46 additions and 8 deletions
+8 -2
View File
@@ -1310,9 +1310,15 @@ oakengine_clip_get_connected_viewer(const OakEngineBlock *clip);
}
// Qt6 on some toolchains requires complete types in meta-type instantiations
// (e.g. QList<OakEngineBlock*> in TimelinePanel signals); declare the handle
// opaque instead of pulling the engine definition into the public header.
// (e.g. QList<OakEngineBlock*> in TimelinePanel signals); declare the handles
// opaque instead of pulling the engine definitions into the public header.
Q_DECLARE_OPAQUE_POINTER(OakEngineBlock *)
Q_DECLARE_OPAQUE_POINTER(OakEngineClip *)
Q_DECLARE_OPAQUE_POINTER(OakEngineMarkerList *)
Q_DECLARE_OPAQUE_POINTER(OakEngineMarker *)
Q_DECLARE_OPAQUE_POINTER(OakEngineWorkarea *)
Q_DECLARE_OPAQUE_POINTER(OakEngineTrack *)
Q_DECLARE_OPAQUE_POINTER(OakEngineTrackList *)
#endif
#endif /* OAKENGINE_TIMELINE_H */