[CMake] cmake -E create_symlink for Windows
Marcel Loose
loose at astron.nl
Mon Dec 14 03:28:28 EST 2009
On Sat, 2009-12-12 at 12:02 -0500, Bill Hoffman wrote:
> 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 <themiwi at 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
Just out of curiosity: how does Cygwin handle this whole symbolic link
business?
Marcel Loose.
More information about the CMake
mailing list