[CMake] What does `cross-platform' mean?

Eric Noulard 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
> source-dependencies.

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
> CMake.

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 mailing list