Alan W. Irwin wrote:
On 2009-12-12 09:44-0500 David Cole wrote:

On Fri, Dec 11, 2009 at 10:04 AM, Michael Wild <them...@gmail.com> wrote:

Bummer. What where they THINKING??? (if at all...). It seems to me
that M$ just CAN'T get it right. No matter how many times they try,
how many good examples are out there, they always manage to seriously
screw something up... Come to think of it, they probably were thinking
about symlink-attacks...


Come on. Let's make a deal: you don't bash Microsoft, Apple or Google here
on the CMake mailing list and I won't bash Unix or Linux in any forum,
anywhere, ever. OK? Does that sound cool?

Absolutely.  There used to be another poster here (before he got
so-over-the-top that he was removed) that kept making gratuitous attacks on
Linux and free software, and that was extremely annoying.  So as a Linux
developer I support Dave's call to be aware of other's strong feelings
and stay on topic so we don't waste a lot of time here.

Back on topic....

I am one of the lead developers of the PLplot CMake-based build system.
However, my development experience is Linux only so I must rely on my
Windows developer colleagues to catch any Linux-only or Unix-only mistakes I
put into our build system.  Up to this thread, I had no idea that there
wasn't some reliable way to create symlinks on Windows, and it's only by
chance that I haven't used create_symlink in any part of our build other
than the Linux-only documentation build.

Before this thread, I always assumed cmake -E commands gave you an excellent
way to do common tasks in a cross-platform way.  I appeal to the CMake
developers to avoid from now on implementing any more CMake -E commands that
have no hope of ever fulfilling that mandate, Also, please deprecate and
document the cmake -E commands with obvious cross-platform limitations
because otherwise your users are going to assume (like I did) that those
commands are the recommended way to help make their project cross-platform.
Is create_symlink an isolated case, or are there other cmake -E commands to
worry about?

Also, is create_symlink really a lost cross-platform cause?  Reading later
in Dave's post, it appears that the symlink concept does work on some
Windows platform (he mentioned something about "shortcuts").  If there are
intentions to make it work on a number of Windows platforms eventually, but
that just hasn't happened yet, then _warn_ about that issue (e.g., something
like "Unix-only for now" in the documentation).  Also, if the CMake -E
command is run on a platform that doesn't support it something better than a
silent failure should be the result.


Some things just can not be done cross platform. For example reading/ writing the windows registry, creating an OSX application bundle, and sym-links. Also, some computers don't even have shared libraries. Should we disable those features from CMake? That said, the symlink command is the only -E that does not work cross platform. The -E create_symlink does return failure from main when called on windows. So, if you used it in a custom command which is the idea for -E stuff, it would fail in a noticeable way (the build would fail). If you call it from execute_process, you should be checking the return value as well.

-Bill
_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to