build(macos): configure C++ standard and ICU root#5101
Conversation
Pass the project C++ standard explicitly so fetched dependencies build against modern Homebrew headers. Point CMake at Homebrew's icu4c@78 prefix to match the dependency installed by the macOS build path. Mirror the manual macOS build script in CI so the two paths stay aligned.
|
|
I'm confused about setting CXX_STANDARD here. We already set it in cmake itself, and we always use fetch content in our CI builds, so I'm not sure this is actually an issue. |
|
The existing CXX_STANDARD setting applies only to the In my local build, Homebrew had Boost 1.90 installed, while the project requested exactly 1.89. CMake rejected the newer Homebrew Boost and fell back to FetchContent, so Boost.Locale was built as part of the project. That fetched Boost target then compiled against Homebrew’s ICU headers without a C++17+ default and failed on ICU headers using constructs like Passing That said, if you prefer, setting the project-wide C++ standard near the top-level CMake before dependencies are loaded would be cleaner than passing it from the macOS scripts. I also wouldn't be offended if you chose to reject as it is very much an edge case and easy to work around with |
|
I think this can probably affect Linux as well, so probably we could just set it in the top level CMakelists.txt as well as in the tests. |
|
Right, it probably does. Do you want me to take a crack at it? |
Yes please! |



Description
Pass the project C++ 23 standard explicitly so fetched dependencies build against modern headers. C++23 was chosen because it's already used for the
sunshinetarget incmake/targets/common.cmakeand by the Homebrew formula inpackaging/sunshine.rb, but those don't apply early enough to dependencies built throughscripts/macos_build.sh. This can break when Boost falls back to FetchContent.Point CMake at Homebrew's icu4c@78 prefix to match the dependency installed by the macOS build path. Without this, CMake can pick up inconsistent ICU headers/configuration from the Apple SDK or system paths while Boost.Locale is built from source.
Mirror the manual macOS build script in CI so the two paths stay aligned, as requested in the script comments.
Screenshot
Issues Fixed or Closed
Roadmap Issues
Type of Change
Checklist
AI Usage