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

Paul Annetts paul at lightunobscured.com
Mon Oct 21 04:08:52 EDT 2013


Thanks Brad, sounds like a plan.

Patrick's comments about using CMAKE_GENERATOR_TOOLSET have made me think we should have a combined "Visual Studio 11 2012 Windows-Store" generator using CMAKE_GENERATOR_TOOLSET to switch between Windows Store and Windows Phone. 
 (The Windows Store and Phone C/C++ APIs are very similar, but don't share an ABI).

I think it could simplify future work on the generator and potentially make it more widely applicable. Would it be feasible in future to update this generator's findPackage() to make it toolset and platform aware, without breaking existing generator behaviour?

What do you think?

Paul.
-----Original Message-----
From: Brad King [mailto:brad.king at kitware.com] 
Sent: 18 October 2013 17:52
To: Paul Annetts
Cc: 'Patrick Gansterer'; cmake-developers at cmake.org
Subject: Re: [cmake-developers] Patches for Visual Studio multi-CPU architecture project generation and a Windows-Phone-8 generator

On 10/18/2013 12:03 PM, Paul Annetts wrote:
> Any multi-CPU arch generator which tries to at one point during the 
> CMAKE configure step to determine endianess or sizeof(T*) is always going to get the answer wrong for one or more of those architectures. It is not difficult to find out these values from the compiler or standard C/C++. However such a generator will share a common API across the CPU archs and so have the potential to add significant user benefit.
> 
> My experience is that WP8 benefits greatly from multi-platform support, so that practical usage of CMAKE is kept simple and flexible for end users. In my opinion this outweighs the theoretical benefit of find_package() for WP8 (for a sum total of 0 current compatible binaries).
> 
> ​However on balance I don’t think adding multi-platform to the general VS toolchain adds any value. For example there’s no point in compiling CMAKE for x64 as it doesn't need to address > 4GB RAM and it won't even be possible to compile it for ARM as CMAKE can’t run under Windows 8 RT.

Okay, I think we can work with adding the CMAKE_GENERATOR_PLATFORMS variable to specify the list of platforms (what you called CMAKE_MSVC_PLATFORMS).  It can be documented as supported only by the WP8 generators for now.  If a project or user sets the variable they are responsible for making the build work that way.  It won't appear by default or be used by other generators so no one else will be affected.

Thanks,
-Brad



More information about the cmake-developers mailing list