[CMake] cmake -E create_symlink for Windows

Hendrik Sattler post at hendrik-sattler.de
Fri Dec 11 09:17:45 EST 2009


Zitat von Michael Wild <themiwi at gmail.com>:
> On 11. Dec, 2009, at 14:27 , Marcel Loose wrote:
>> I was browsing the CMake sources for a problem I was facing with the
>> creation of symlinks (on Unix that is) and I noticed that the
>> SystemTools::CreateSymlink function simply returns false when building
>> on a Windows platform.
>>
>> Does that mean that I cannot use 'cmake -E create_symlink' on Windows.
>> If that's the case I consider it a bug, because the documentation
>> suggests that 'cmake -E create_symlink' provides a platform independent
>> way of creating symbolic links. So, if the OS and/or filesystem does not
>> support symbolic links, IMHO, it should just copy the file.
>
> Simply copying the file might be just as bad if people assume it   
> really IS a symlink... IMHO, if the OS can't create a symlink, cmake  
>  -E create_symlink should fail loudly, not just silently ignore it.   
> And somebody should implement this function for Windows >=   
> Vista/2008 (i.e. WINVER >= 0x0600):
>
> http://msdn.microsoft.com/en-us/library/aa363866(VS.85).aspx

For this, also see
   http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html
Please note the UAC dialog when creating symlink on Vista. Have fun,  
I'd say :-(

And what do you do on WindowsXP? What to do on FAT filesystems?
Additionally, without that extension above, it is non-obvious for  
Windows users that a specific file is a symbolic link.

HS




More information about the CMake mailing list