Docs: note the macOS Homebrew step is skippable for C-only projects - #6687
Conversation
Both setup guides justified the `xargs brew install` step by claiming the .pkg leaves MeshLib's Homebrew dylibs unresolved. It doesn't: distribution_apple.sh runs macos_bundle_dylibs.py, which copies every Homebrew dylib into the framework and rewrites the load commands. The step is really a configure-time C++ requirement (MRMeshConfig.cmake's find_dependency chain), which a C-only consumer never hits because MeshLibC2Config.cmake declares no dependencies.
| - The framework is installed into `/Library/Frameworks/MeshLib.framework`, or into `~/Library/Frameworks/MeshLib.framework` if you choose to install for the current user only. | ||
| - **Install Dependencies via Homebrew** | ||
| \n The `.pkg` does not pull in the Homebrew formulae MeshLib links against, so install them yourself. This needs [Homebrew](https://brew.sh/) — install it first if you do not have it. Open Terminal and run the following command: | ||
| \n Needed only if your project also compiles C++ against MeshLib's C++ headers: `MRMeshConfig.cmake` resolves Boost, TBB and six more via `find_dependency`, so CMake configuration fails without them. A C-only project can skip this step — `MeshLibC2Config.cmake` declares no dependencies, and the framework carries the Homebrew dylibs its binaries load. The step needs [Homebrew](https://brew.sh/) — install it first if you do not have it. Open Terminal and run the following command: |
There was a problem hiding this comment.
Explanation is too long. Preserve the original working as much as possible here, just add that this step can be skipped if you only use the C interface.
| /Library/Frameworks/MeshLib.framework/Versions/Current/bin/meshconv --help | ||
| \endcode | ||
| \n A non-zero exit here usually means the Homebrew requirements above are missing. | ||
| \n A non-zero exit here points at the install itself — a wrong path, or a `.pkg` built for the other architecture. The Homebrew requirements are not involved: the framework carries the Homebrew dylibs its binaries load. |
There was a problem hiding this comment.
If homebrew is unrelated, don't mention it. Perphaps remove this entire paragraph.
| - The framework is installed into `/Library/Frameworks/MeshLib.framework`, or into `~/Library/Frameworks/MeshLib.framework` if you choose to install for the current user only. | ||
| - **Install Dependencies via Homebrew** | ||
| \n The `.pkg` does not pull in the Homebrew formulae MeshLib links against, so install them yourself. This needs Homebrew — if you do not have it, install it first as described under \ref CppSetupMacOSPrereq "Prerequisites". Open Terminal and run the following command: | ||
| \n The `.pkg` does not install them, and CMake configuration of a C++ consumer fails without them: `MRMeshConfig.cmake` resolves Boost, TBB and six more via `find_dependency`. This needs Homebrew — if you do not have it, install it first as described under \ref CppSetupMacOSPrereq "Prerequisites". Open Terminal and run the following command: |
There was a problem hiding this comment.
Same here. Try to preserve the original wording as much as possible, but add that this step can be skipped if only the C bindings are used.
Restore master's wording for the Homebrew step in both setup guides and add a single skip clause for C-only consumers, in place of the long CMake rationale. Drop the meshconv troubleshooting sentence outright: Homebrew is not involved in that failure, and the macOS troubleshooting table already describes the real configure-time one.
|
Addressing the review — all three in 0c98e9a. Net diff vs master is now two added sentences and one deletion.
Verification — Doxygen 1.14.0 (the version |
|
update PR title and description based on actual contents |
1 similar comment
|
update PR title and description based on actual contents |
|
"update PR title and description based on actual contents" — Done; no code change, the diff is unchanged at 0c98e9a.
Doxygen isn't installed on this runner, so the Doxygen/HTML lines under Verification are carried over from the 0c98e9a run rather than re-run. The CMake claims ( |
|
Post-merge review done — all planned PRs merged, tracking issue closed. |
Net diff vs master: two added sentences and one deleted one, all in
doxygen/.What changed
CSetupGuide.dox:87— master's Homebrew sentence kept verbatim, plus "Skip this step if your project only uses the C interface."CppSetupGuide.dox:226— same shape, plus "Skip this step if your project only uses the C bindings."CppSetupGuide.dox, Verify the installation step — removed "A non-zero exit here usually means the Homebrew requirements above are missing." Homebrew is not what makesmeshconv --helpfail.Why a C-only consumer can skip it:
MRMeshConfig.cmake.incallsfind_dependency(Boost 1.73)plus seven more, so a C++ consumer fails at configure without the formulae, whileMeshLibC2Config.cmake.indeclares none andsource/MeshLibC2/CMakeLists.txt:39links its depsPRIVATE. The macOS row of the troubleshooting table (CppSetupGuide.dox:441) already documents that configure-time failure, so nothing was added there.Verification
update-docs.ymlinstalls, run overdoxygen/general_pages,doxygen/examples,doxygen/common_files: exit 0, warning log byte-identical to master's (62 lines both).MeshLibCSetupGuide.html/MeshLibCppSetupGuide.html— both paragraphs read as intended,\ref CppSetupMacOSPrereq "Prerequisites"still resolves, and the numbered step survives the deletion.MRMeshConfig.cmake.in,MeshLibC2Config.cmake.in,source/MeshLibC2/CMakeLists.txt.doxygen/-only (henceupdate-doc-only), so nothing is compiled or runtime-observable. The full site build (MeshInspector.github.io/scripts/update_doc.sh) needs CI-only binding artifacts and is not reproducible here.