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

Jed Brown jed at 59A2.org
Fri Nov 7 06:40:36 EST 2008


On Fri 2008-11-07 11:44, Eric Noulard wrote:
> 2008/11/7 Jed Brown <jed at 59a2.org>:
> > 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.

I agree, it's tricky and often a mess.

> However I don't really think that this is the job of CMake.
[snip]
> 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.

Thank you Eric, this greatly clarifies some design decisions.  May I
interpret this to mean that CMake does not intend to be concerned with
finding the `right' version of a library, it is the job of the OS to
make the system paths find the correct versions?  Thus if CMake finds
any version of a library, it's assumed correct.  This does make life
easier for module writers and makes many of my concerns about directory
paths being parsed incorrectly moot.

Unfortunately not every environment with multiple versions has the
`module' tool and users will expect to be able to have a reasonable way
to find specific versions of software.  My development box has 4 MPI
implementations and 4-16 (ABI-incompatible) versions of many libraries.
One of these is the default stable version installed by my Linux
distribution's package manager.  To build against a non-standerd
version, I should ideally be able to specify one path for each interface
package (library that my project calls into directly).  That this is
profoundly broken came as a surprise to me since this is how most other
automatic configuration packages work (albeit imperfectly).  It's much
clearer if CMake never intends to support this usage.  With the `module'
tool, I would load the appropriate modules, run cmake without any
parameters, and (if the `module'-modules were set up with appropriate
discipline) get a working build.  I agree that this is nicer for
everyone (provided `module' is available), but perhaps the CMake
documentation could be explicit that you need to do something external
to ensure that `incorrect' versions of libraries cannot be found by the
system.

Jed
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: not available
URL: <http://www.cmake.org/pipermail/cmake/attachments/20081107/dfb55032/attachment.pgp>


More information about the CMake mailing list