Hi all,
I haven't tried Ceres 3.0 yet but my views/comments on this:
- The other cache variables (like BUILD_TESTING, BUILD_BENCHMARKS) should probably include Ceres (or CERES) in their name though to avoid clashes, as they are very common names.
- If Ceres 3.0 does build a local copy of Abseil before checking or allowing for a system install, this will be *very* annoying to anyone using a package manager. There is nothing worse than libraries that build their own dependencies without a way to disable it to instead use the bog-standard CMake mechanism (which is find_package in CONFIG mode!), so it will work with a package manager. Please make sure that Ceres's CMake scripts play well with package managers like vcpkg. The reality is that vcpkg (and the same is probably true for other package managers, but I only know vcpkg well) has gained so much traction by now in the C++ community that it is no longer possible to ignore it, for any library that takes itself seriously. And vcpkg-specific patches are not nice, and I believe vcpkg's guidance is that packages do need to use their dependencies from vcpkg too - for example Abseil is in vcpkg too, so Ceres in vcpkg must use Abseil from vcpkg.
I would recommend that before releasing 3.0, it's made sure that the vcpkg port of Ceres can be updated to 3.0 and still works. This may likely surface issues in Ceres's updated CMake scripts, which can then be fixed *before* a final 3.0 release.
I'm not sure I would be able to help updating the vcpkg port file of Ceres, but I would definitely be able to help test it.
Thanks a lot.
Patrik