ci: GCC 11 portability + BUNDLE DESTINATION "." on macOS

Linux (Rocky manylinux, GCC 11):

- WgpuAreaMeasurement.h: include <cstddef> directly. GCC 11 does not
  transitively pull `size_t` through <vector>, so triangleCount()'s
  return type fails to parse.

- WgpuViewportWindow.cpp:meshLocalToGlobal: use static_cast<double>(...)
  instead of double(mesh_local[N]) when constructing the Eigen::Vector4d.
  The latter triggers GCC 11's most-vexing-parse: it reads
  `Vector4d local(double(mesh_local[0]), double(mesh_local[1]), ...)`
  as a function declaration of `local` taking parameters
  `double mesh_local[0]` etc., colliding with the outer `mesh_local`
  parameter and failing with "redefinition of double* mesh_local".

macOS arm64:

- IfcViewerWgpuMinimal + BonsaiViewer install rules: change
  `BUNDLE DESTINATION bin` → `BUNDLE DESTINATION .`. Qt's deploy
  generator emits `macdeployqt <Target>.app` with no path prefix, which
  only resolves when the bundle sits at the install-prefix root.
  `BUNDLE DESTINATION bin` put it at `<prefix>/bin/Target.app` and the
  install/strip step failed with "Could not find app bundle".

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Dion Moult
2026-06-02 07:53:57 +10:00
parent 45e9f763c8
commit 938dda80d0
4 changed files with 18 additions and 10 deletions
+4 -3
View File
@@ -133,11 +133,12 @@ target_link_libraries(BonsaiViewer PRIVATE
Qt${QT_VERSION}::Widgets
)
# MACOSX_BUNDLE targets require BUNDLE DESTINATION at install time even when
# nobody runs `make install` (CMake validates the rule at configure).
# BUNDLE DESTINATION must be "." (install-prefix root) on macOS — Qt's
# deploy generator emits `macdeployqt BonsaiViewer.app` (no path
# prefix), which resolves only when the .app sits at the install root.
install(TARGETS BonsaiViewer
EXPORT ${IFCOPENSHELL_EXPORT_TARGETS}
RUNTIME DESTINATION bin
BUNDLE DESTINATION bin
BUNDLE DESTINATION .
)
ifcopenshell_deploy_qt_runtime(BonsaiViewer)