Hi Greg,

You might want to check out our current fork of CMake on 
http://cmakems.codeplex.com. I've just added support for multiplatform support 
for Windows Phone and Windows Store app in a similar way that it is done for 
iOS.

You can try the build on http://cmakems.codeplex.com/releases/view/132284 or 
use the MSMultiPlatform branch. This will generate one solution that can target 
Win32/ARM/x64 placing each architecture in a folder based on the platform name 
(using the $(Platform) variable in VS. 

To enable this, add the following define: 
CMAKE_VS_EFFECTIVE_PLATFORMS=Win32;ARM;x64 and code for all three platforms 
will be generated. We'd love to understand the type of issues you might run 
into with this and how we can make it better.

Thanks
~Gilles

-----Original Message-----
From: CMake [mailto:[email protected]] On Behalf Of Gregor Jasny
Sent: Monday, September 8, 2014 12:06
To: [email protected]; Alexey Petruchik
Subject: Re: [CMake] Get Visual Studio target Arch

On 06/09/14 16:02, Alexey Petruchik wrote:
> I want to use different library folders for x64/x86/arm architectures.
> Cmake has different generators for each arch: "Visual Studio 12 2013", 
> "Visual Studio 12 2013 ARM", "Visual Studio 12 2013 Win64". Is there 
> any cmake var to get visual studio target arch? CMAKE_SYSTEM_PROCESSOR 
> is always AMD64 for me no matter what generator I'm using.

All the already available stuff in cmake is not sufficient. Especially if you 
start to cross compile.

I use the pre-defined C/C++ preprocessor symbols for that:

include(CheckSymbolExists)

if(WIN32)
  check_symbol_exists("_M_AMD64" "" RTC_ARCH_X64)
  if(NOT RTC_ARCH_X64)
    check_symbol_exists("_M_IX86" "" RTC_ARCH_X86)
  endif(NOT RTC_ARCH_X64)
  # add check for arm here
  # see http://msdn.microsoft.com/en-us/library/b0084kay.aspx
else(WIN32)
  check_symbol_exists("__i386__" "" RTC_ARCH_X86)
  check_symbol_exists("__x86_64__" "" RTC_ARCH_X64)
  check_symbol_exists("__arm__" "" RTC_ARCH_ARM)
endif(WIN32)

Now you could write:

if(RTC_ARCH_X64)
  set(MY_LIB_DIR x64)
elseif(RTC_ARCH_X86)
  set(MY_LIB_DIR x86)
elseif(RTC_ARCH_ARM)
  set(MY_LIB_DIR x86)
else()
  message(FATAL_ERROR "Unknown architecture")
endif()

I hope this helps.

Thanks,
Gregor
-- 

Powered by www.kitware.com

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

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

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

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake
-- 

Powered by www.kitware.com

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

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

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

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake

Reply via email to