[CMake] What does `cross-platform' mean?
eric.noulard at gmail.com
Fri Nov 7 05:44:05 EST 2008
2008/11/7 Jed Brown <jed at 59a2.org>:
> I find that CMake works well when there is only one version of installed
> software, and shared libraries are used. When there are multiple
> ABI-incompatible versions of libraries or no shared libraries, many
> modules are broken. They will systematically find incompatible
> libraries even with optimal hinting or claim to be successful but still
> produce link errors. Claiming to be successful, but failing at
> link-time or runtime is the worst possible behavior.
> Are such environments not a goal of CMake?
As far as I know there is not so much systems where the simultaneous
installation of different version of the same software is cleanly handled.
However I don't really think that this is the job of CMake.
On debian linux you have update-alternative
(which is install on Fedora/CentOS/RedHat too).
The trouble is that, this is not a USER tool.
So sys admin may setup alternatives for ALL users but
differents user may not use differents alternatives...
> My previous messages to this list, describing many forms of brokenness
> in such environments, have gotten few responses (thanks Alexander, Bill,
> Csaba) while everyone weighs in on the bike shed. If it's not a
> priority, then CMake is little more than color Make with inferred
You are kidding right :-)
> Sure, maybe everything Just Works on vanilla
> Debian/Ubuntu/Redhat, but if it doesn't offer a better experience on
> say, Cray XT5, than a plain Makefile, it's hard for me to sell users on
I did work with Cray a long time ago (T3E :-)
this was the first (?only?) system I crossed which has the great
"module switch" feature which makes it possible for a USER
to select the wanted version of each of his/her favorite tool:
My current opinion is the "multiple version" issue should be handle
by a "CRAY module"-like tool and not by CMake itself.
If the underlying tool is efficient then CMake FIND module should find
the appropriate version.
More information about the CMake