[cmake-developers] Patches for Visual Studio multi-CPU architecture project generation and a Windows-Phone-8 generator

Patrick Gansterer paroga at paroga.com
Fri Oct 18 10:48:04 EDT 2013


On 18.10.2013, at 15:39, Paul Annetts wrote:
> Dealing with your points:
> PATRICK:
>> if(CMAKE_SIZEOF_VOID_P EQUAL 8)
>>  message(FATAL_ERROR "Building x64")
>> endif()
> 
> Could easily be replaced with some form of compiler capability detection
> then at compile time using static_assert. That would have the advantage of
> using standard language features where they are available.
> 	static_assert(sizeof(void *) == 4, "64-bit code generation is not
> supported.");
> 	From <http://msdn.microsoft.com/en-us/library/vstudio/dd293588.aspx>
> 
> 
> Once you know from a CMAKE perspective that you are in a known API set such
> as Windows Phone, it is quite straightforward to use language features or
> compiler macros rather than CMAKE macros to detect the CPU architecture, the
> difference in endianness etc.

I know. ;-) I only wanted to show you a simple CMake code which does not work with your multi-platform patch. It might work for some projects (without such checks, find_package(), ...), but not in general.

> PATRICK:
>> @windows-phone-8: Why does it depend on the multi platform stuff? Is it
> possible that it's only 
>> needed to bypass the correct platform detection? Otherwise it shouldn't be
> a problem to add 
>> the "Windows-Phone-8" generator like the Windows CE ones. Since the
> platform name for 
>> Windows-Phone 8 seams to be the same like for the desktop versions
> (compared to WinCE 
>> where they need to match a specific installed SDK name) it might be enough
> for the user to set 
>> CMAKE_GENERATOR_TOOLSET to "v110_wp80"?
> 
> It’s not enough to set v110_wp80 as the default linker settings in
> particular are quite different (e.g. there is no kernel.lib in Windows
> Phone).

The important part of my statement was "for the" user: If the user sets the toolset to a Windwos Phone one CMake can detect that and do not link against kernel.lib (and all other standard libs).

-- Patrick




More information about the cmake-developers mailing list