Hello again,
A friendly "up", in case this thread went unnoticed.
I'm still very interested to understand why this restriction is necessary.
Best regards,
Guillaume
To view this discussion on the web visit https://groups.google.com/d/msgid/abseil-io/HE1PR02MB1195A4CB938F8E66AB8A5B618D3D0%40HE1PR02MB1195.eurprd02.prod.outlook.com.
Thank you for your answer...and question :)
I would just state that there are no ABI compatibility guarantee, and the library used at compile-time and runtime should be the same.
The runtime library should not be replaced by a more recent version.
I believe a lot of projects are already working that way, maybe not for the same reasons as Abseil, but it's not uncommon.
TBH, my concern is with build system integrations.
When I use CMake on a simple project, I sometime compile manually its few dependencies, build and install them in an install prefix.
Then, to build the main project, I just pass-in the this install prefix, and the dependencies are found.
I don't think there is anything wrong with this method, but it just does not seem possible with Abseil.
In my previous company I experienced 3 different build systems (inhouse tool, bitbake, catkin/ament) to build heterogeneous projects (autotools base, cmake based, custom-build tool based, ...).
All projects were built from source, but depended on a binary representation of the package they depends on.
It was possible that projects were built with different compile options, with the restriction that a project does not require an older standard that its dependencies.
I find this restriction..."less restrictive" than basically requiring the whole workspace to be built with the exact same flags.
Also, for CMake "build from source" does not guarantee anything more than depending on a locally prebuilt target.
The compile options are specified on a per-target basis, so even within a same project, you can have multiple standards (not that I recommend it).
Another issue regarding build systems, is that they are quite a few build systems coming up, and they often capable of detecting pre-built stuff.
For example, meson (http://mesonbuild.com/).
If someone wants to use Abseil on a projet that uses this build system.
With the guideline, it has to rewrite the Abseil build in meson first, then use it.
By using a generated config.h and allowing an 'install' target to the CMake build, it should be easier.
First build and install Abseil locally with CMake, then point meson to it.
Guillaume