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

Jed Brown jed at 59A2.org
Fri Nov 7 06:02:37 EST 2008


On Fri 2008-11-07 11:28, Andreas Pakulat wrote:
> If you run into such problems then open bugreports. Many of the
> FindXXX.cmake modules have been contributed and most people out there don't
> have a cluster of different types of machines with different installations
> of the software at hand. Its quite easy to overlook something and "get it
> wrong", so if you find errors you need to report them and work with the
> CMake people on fixing them - or fix them locally in your installation.

Thanks Andreas.

I'm bringing it up here because it isn't so much specific to particular
modules as it is errors in almost all modules.  This started with me
learning enough CMake to write my own modules by looking at some of the
modules distributed with CMake.  Confused that I couldn't find the logic
dealing with certain issues, I made some test cases and found that every
module I found would fail in predictable, obvious, and unacceptable
ways.  Moreover making these modules correct requires some primitives so
that even the simplest FindXXX module doesn't have to be 100 lines.
I've only been using CMake for a few weeks, but I offered some
suggestions on possible primitives here

  http://www.cmake.org/pipermail/cmake/2008-November/025112.html

I had hoped that by raising the issue of widespread brokenness, there
would be some response from CMake developers about ways to fix it.  It
seems like I'm still at the stage of convincing people that there is a
real problem.  This is why I'm concerned that `cross-platform' may
actually mean `Ubuntu/Windows/Mac' in practice.

BTW, Kitware has a build farm and I had assumed that they would have
some non-vanilla machines so that at least the modules distributed with
CMake would be reasonably robust.  To have the build system find these
bugs, I suggest two configurations which I assume are not present.
First, a machine with only static libs (almost every non-standalone
package is broken in this environment).  Second, a machine where
packages are installed in PREFIX=/usr and PREFIX=/opt/package-name,
where the user requests the version in /opt/package-name.  Lots of
modules provide no reliable way to pick the version in /opt/package-name
short of manually providing full path to every library in the package
(including recursive dependencies).

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/8a3187b9/attachment.pgp>


More information about the CMake mailing list